CSS Scroll Snap์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ผ๋ก ์น ์ธํฐํ์ด์ค์ ์์ฐ์ค๋ฝ๊ณ ๋ฌผ๋ฆฌ ๊ธฐ๋ฐ ์คํฌ๋กค์ ๊ตฌํํ์ฌ, ์ ์ฐํ ์์ง์๊ณผ ์์ธก ๊ฐ๋ฅํ ์ฝํ ์ธ ์ ๋ ฌ๋ก ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค์ธ์.
CSS Scroll Snap์ ๋ชจ๋ฉํ ์์ง: ๊ธ๋ก๋ฒ ์น์ ์ํ ์์ฐ์ค๋ฌ์ด ์คํฌ๋กค ๋ฌผ๋ฆฌ ๊ตฌํ
๊ด๋ํ๊ณ ๋์์์ด ์งํํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ง์ ์ผ๋ก ๋ชฐ์ ๊ฐ ์๊ณ ์ง๊ด์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ถ๊ตฌํ๋ ๊ฒ์ ์์ํ ์ฌ์ ์ ๋๋ค. ์๋ ๊ฐ ์น ์คํฌ๋กค์ ๊ทผ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ด์์ง๋ง, ์ข ์ข ๋ค์ดํฐ๋ธ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ๋ฐ์คํฌํฑ ์ํํธ์จ์ด์์ ๊ฒฝํํ๋ ์ ์ฐํ๊ณ ๋ฌผ๋ฆฌ ๊ธฐ๋ฐ์ ์ํธ์์ฉ๊ณผ๋ ํ์ฐํ ๋ฌ๋์ต๋๋ค. ๊ธฐ์กด ์น ์คํฌ๋กค์ "๋๋ ๋๊ธฐ๋" ์ค์ง-์์ ๋ฐฉ์์ ํ๋ฆ์ ๋ฐฉํดํ๊ณ ํ์์ ์ด๋ ต๊ฒ ํ๋ฉฐ, ๊ฒฐ๊ตญ ์ ๋์์ธ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ํดํ ์ ์์์ต๋๋ค. ํ์ง๋ง ์น์ด ์์ง์ด๋ ๋ฌผ๋ฆฌ์ ๊ฐ์ฒด์ ๋ง์กฑ์ค๋ฌ์ด ๊ด์ฑ, ์ฐ์ํ ๊ฐ์, ์์ธก ๊ฐ๋ฅํ ์์ฐฉ์ ๋ชจ๋ฐฉํ ์ ์๋ค๋ฉด ์ด๋จ๊น์? ๋ฐ๋ก CSS Scroll Snap, ๊ฐ๋ ฅํ ๋ค์ดํฐ๋ธ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ๊ณผ ๊ทธ ์์ฒด๋ก ๊ฐ๊ณผ๋๊ธฐ ์ฌ์ด ๋น์ฅ์ ๋ฌด๊ธฐ, ์ฆ ์์ฐ์ค๋ฌ์ด ์คํฌ๋กค ๋ฌผ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ ๋ด์ฅ ๋ชจ๋ฉํ ์์ง์ด ์์ต๋๋ค.
์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋๋ CSS Scroll Snap์ด ๋จ์ํ ์ค๋ ๊ธฐ๋ฅ์ ๋์ด ์์ฐ์ค๋ฝ๊ณ ๋ฌผ๋ฆฌ ๊ธฐ๋ฐ ์ํธ์์ฉ ๋ชจ๋ธ์ ํฌ์ฉํ๋ฉฐ ์คํฌ๋กค ๊ฒฝํ์ ๊ทผ๋ณธ์ ์ผ๋ก ์ด๋ป๊ฒ ๋ณํ์ํค๋์ง ํ๊ตฌํฉ๋๋ค. ํต์ฌ ์์ฑ, ์ค์ฉ์ ์ธ ๊ตฌํ, ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ์ฌ์คํ ์ด์ , ๊ทธ๋ฆฌ๊ณ ์ง์ ์ผ๋ก ๊ธ๋ก๋ฒํ๊ณ ํฌ์ฉ์ ์ด๋ฉฐ ์ฆ๊ฑฐ์ด ์น ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ ค๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ์ ๋ต์ ๊ณ ๋ ค ์ฌํญ์ ์ดํด๋ณผ ๊ฒ์ ๋๋ค.
ํจ๋ฌ๋ค์ ์ ํ ์ดํดํ๊ธฐ: ๊ฐ์์ค๋ฌ์ด ๋ฉ์ถค์์ ์์ฐ์ค๋ฌ์ด ํ๋ฆ์ผ๋ก
CSS Scroll Snap์ด ๋๋ฆฌ ์ฑํ๋๊ธฐ ์ ์๋ ์ ์ด๋ ๋ถํ ์คํฌ๋กค ๊ฒฝํ์ ๋ฌ์ฑํ๊ธฐ ์ํด ์ผ๋ฐ์ ์ผ๋ก ๋ณต์กํ๊ณ ์ข ์ข ์ฑ๋ฅ ์ง์ฝ์ ์ธ JavaScript ์๋ฃจ์ ์ด ์ฌ์ฉ๋์์ต๋๋ค. ์ด๋ฌํ ์คํฌ๋ฆฝํธ๋ ์คํฌ๋กค ์์น๋ฅผ ์ธ์ฌํ๊ฒ ์ถ์ ํ๊ณ , ๊ฐ์ ๊ณก์ ์ ๊ณ์ฐํ๊ณ , ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์คํฌ๋กค ์คํ์ ์ ์กฐ์ ํ์ต๋๋ค. ํจ๊ณผ์ ์ด์์ง๋ง, ์ฑ๋ฅ ์ค๋ฒํค๋๋ฅผ ์ ๋ฐํ๊ณ ๋ธ๋ผ์ฐ์ ์ ๋ค์ดํฐ๋ธ ๋ ๋๋ง๊ณผ ๋ ํตํฉ๋ ๋๋์ ์ฃผ์์ผ๋ฉฐ, ๋ค์ํ ์ฅ์น์ ์ฌ์ฉ์ ์ ๋ ฅ ๊ฐ์ "๋๋"์ด ๋ฌ๋์ต๋๋ค.
CSS Scroll Snap์ ์ ์ธ์ ์ด๊ณ ์ฑ๋ฅ์ด ์ฐ์ํ๋ฉฐ ๋ณธ์ง์ ์ผ๋ก ๋ค์ดํฐ๋ธ์ ์ธ ๋์์ ์ ๊ณตํฉ๋๋ค. ์น ๊ฐ๋ฐ์๊ฐ ์คํฌ๋กค ๊ฐ๋ฅํ ์ปจํ ์ด๋ ๋ด์ ๋ช ํํ ์ค๋ ํฌ์ธํธ๋ฅผ ์ ์ํ ์ ์๋๋ก ํ์ฌ ๋ธ๋ผ์ฐ์ ์์ฒด์์ ์ค๋ ์ ๋ณต์กํ ์ญํ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด๋ ๋จ์ํ ์คํฌ๋กค์ ํน์ ์ง์ ์ผ๋ก ๊ฐ์ ํ๋ ๊ฒ์ด ์๋๋๋ค. ์ค์ํ ๊ฒ์ ๋ธ๋ผ์ฐ์ ๊ฐ *์ด๋ป๊ฒ* ๊ทธ ์ง์ ์ ๋๋ฌํ๋๊ฐ์ ๋๋ค. ์ต์ ๋ธ๋ผ์ฐ์ ๋ ์ ๊ตํ ๋ ๋๋ง ์์ง์ ํตํด ์คํฌ๋กค ์ค๋ ์ ์ฌ์ฉํ ๋ ์์ฐ์ค๋ฌ์ด ๊ฐ์ ๊ณก์ ์ ์ ์ฉํ์ฌ ๋ฌผ๋ฆฌ์ ๊ฐ์ฒด์ ์์ฉํ๋ ๊ด์ฑ๊ณผ ๋ง์ฐฐ์ ์๋ฎฌ๋ ์ด์ ํฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก "๋ชจ๋ฉํ ์์ง"์ด ์๋ํ๋ ๋ฐฉ์์ ๋๋ค. ํ๋ฒํ ์คํฌ๋กค์ ์ง์ ์ผ๋ก ํตํฉ๋๊ณ ์ง๊ด์ ์ธ ๊ฒฝํ์ผ๋ก ๋ณํ์ํค๋ ๋ณด์ด์ง ์๋ ํ์ ๋๋ค.
CSS Scroll Snap์ด๋ ์ ํํ ๋ฌด์์ธ๊ฐ์?
ํต์ฌ์ ์ผ๋ก CSS Scroll Snap์ ์คํฌ๋กค ์ปจํ ์ด๋๊ฐ ์คํฌ๋กคํ ๋ ํน์ ์ง์ ์ ์ค๋ ๋๋๋ก ์ง์ ํ ์ ์๋ CSS ๋ชจ๋์ ๋๋ค. ์ด๋ฏธ์ง ์บ๋ฌ์ , ๋๋ฉ ํ์ด์ง์ ์ผ๋ จ์ ์ ์ฒด ํ๋ฉด ์น์ , ๋๋ ๊ฐ๋ก ๋ฉ๋ด ๋ฐ๋ฅผ ์์ํด ๋ณด์ธ์. ์ฝํ ์ธ ๊ฐ ์์๋ก ํญ๋ชฉ ์ค๊ฐ์ ๋ฉ์ถ๋ ๋์ , ์คํฌ๋กค ์ค๋ ์ ํญ๋ชฉ ๋๋ ํญ๋ชฉ์ ์ผ๋ถ๊ฐ ํญ์ ์๋ฒฝํ๊ฒ ๋ณด์ด๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด๋ฌํ ์ผ๊ด์ฑ์ ๋ฏธ์ ์ผ๋ก pleasingํ ๋ฟ๋ง ์๋๋ผ ์ฌ์ฉ์ฑ์ ์์ฒญ๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
ํ์ง๋ง ๋ง๋ฒ์ ์ค๋ ์ง์ ๊น์ง์ ์ฌ์ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์คํฌ๋กค ์ ์ค์ฒ(์: ๋ง์ฐ์ค ํ ์คํฌ๋กค, ํธ๋ํจ๋ ์ค์์ดํ, ํฐ์น์คํฌ๋ฆฐ ๋๋๊ทธ)๋ฅผ ์์ํ๋ค๊ฐ ๋์ผ๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ์ฆ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ค๋ ์ง์ ์ผ๋ก ์ ํํ์ง ์์ต๋๋ค. ๋์ , ์๋๊ฐ ์ค์ด๋๋ ์คํฌ๋กค์ ๊ณ์ํ๋ฉด์ ์ง์ ๋ ์ค๋ ๋์์ ๋๋ฌํ์ฌ ์ ๋ ฌ๋ ๋๊น์ง ์ฐ์ํ๊ฒ ๊ฐ์ํฉ๋๋ค. ๊ด์ฑ์ ๋๋์ ๋ด์ ์ด ์ ์ฐํ ์์ง์์ด ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ ์์ฐ์ค๋ฌ์ด ์คํฌ๋กค ๋ฌผ๋ฆฌ๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ผ๋ก, ์น ์ํธ์์ฉ์ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ทธ๊ฒ๋งํผ ๋ฐ์์ด ๋น ๋ฅด๊ณ ๋ง์กฑ์ค๋ฝ๊ฒ ๋ง๋ญ๋๋ค.
๋ชจ๋ฉํ ์์ง: ๋ธ๋ผ์ฐ์ ์์ ์ค์ ์ธ๊ณ ๋ฌผ๋ฆฌํ ๋ชจ๋ฐฉํ๊ธฐ
CSS Scroll Snap ๋ด์ "๋ชจ๋ฉํ ์์ง" ๊ฐ๋ ์ ๊ด์ฑ๊ณผ ๊ฐ์์ ์๋ฆฌ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๋ ๋ธ๋ผ์ฐ์ ์ ๊ณ ์ ํ ๋ฅ๋ ฅ์ ์ฐธ์กฐํ๋ฉฐ, ์ด๋ ์ค์ ๋ฌผ๋ฆฌํ์ ๊ทผ๋ณธ์ ์ธ ์์์ ๋๋ค. ์ผํ ์นดํธ๋ฅผ ๋ฐ๋ฉด ๋๋ ์๊ฐ ๋ฉ์ถ์ง ์๊ณ ๊ณ์ ์์ง์ด๋ฉฐ ๋ง์ฐฐ๋ก ์ธํด ์ ์ฐจ ์๋๊ฐ ๋๋ ค์ง๋ค๊ฐ ๊ฒฐ๊ตญ ๋ฉ์ถฅ๋๋ค. ์คํฌ๋กค ์ค๋ ๋ฉ์ปค๋์ฆ์ ์ ์ฌํ ์๋ฆฌ๋ฅผ ์ ์ฉํฉ๋๋ค.
- ๊ด์ฑ ์๋ฎฌ๋ ์ด์ : ์ฌ์ฉ์๊ฐ ์คํฌ๋กค ์ ์ค์ฒ๋ฅผ ์๋ฃํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ํด๋น ์ ์ค์ฒ์ ์๋์ ๋ฐฉํฅ์ ์ด๊ธฐ ์๋๋ก ํด์ํฉ๋๋ค. ๊ฐ์๊ธฐ ๋ฉ์ถ๋ ๋์ , ์คํฌ๋กค ๊ฐ๋ฅํ ์ฝํ ์ธ ๋ "๋ชจ๋ฉํ "์ ์ด์ด๋ฐ์ ๊ณ์ ์์ง์ ๋๋ค.
- ์ฐ์ํ ๊ฐ์: ๋ธ๋ผ์ฐ์ ๋ ๋ง์ฐฐ์ ์๋ฎฌ๋ ์ด์ ํ๋ ๋ด๋ถ ์ด์ง ํจ์๋ฅผ ์ ์ฉํ์ฌ ์คํฌ๋กค ์๋๋ฅผ ์ ์ง์ ์ผ๋ก ๋ฆ์ถฅ๋๋ค. ์ด ๊ฐ์์ ์ ํ์ ์ด์ง ์์ผ๋ฉฐ, ์ข ์ข ๋ถ๋๋ฌ์ด ๊ณก์ ์ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ ์ ํ์ด ๋งค์ฐ ์์ฐ์ค๋ฝ๊ณ ์ ๊ธฐ์ ์ผ๋ก ๋๊ปด์ง๋๋ค.
- ๋์ ์ ๋ ฌ: ์คํฌ๋กค์ด ๊ฐ์ํจ์ ๋ฐ๋ผ ๋ธ๋ผ์ฐ์ ์ ์ค๋ ๋ก์ง์ ์ง์ ๋ CSS ์์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ฅ ๊ฐ๊น๊ณ ๊ฐ์ฅ ์ ์ ํ ์ค๋ ์ง์ ์ ์๋ณํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฝํ ์ธ ๋ ์ด ๋์์ ์ ํํ๊ฒ ์ ๋ ฌ๋๋๋ก ๋ถ๋๋ฝ๊ฒ ์๋ด๋์ด ๋ฌผ๋ฆฌ ๊ธฐ๋ฐ ๋์์ ์๋ฃํฉ๋๋ค.
์ฌ์ฉ์ ์ ๋ ฅ, ์๋ฎฌ๋ ์ด์ ๋ ๋ฌผ๋ฆฌ, ์ ์๋ ์ค๋ ํฌ์ธํธ ๊ฐ์ ์ด๋ฌํ ์ ๊ตํ ์ํธ ์์ฉ์ ์ ์ฝ ์๋ ์คํฌ๋กค๋ณด๋ค ํจ์ฌ ๋ ๋งค๋ ฅ์ ์ด๊ณ ๋ ์ถฉ๊ฒฉ์ ์ธ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ ๋ฐํ ์กฐ์ ์ ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ธ์ง ๋ถํ๋ฅผ ์ค์ ๋๋ค. ์์คํ ์ด ์๋ํ ๋ณด๊ธฐ๋ก ๋ถ๋๋ฝ๊ฒ ์๋ดํฉ๋๋ค.
CSS Scroll Snap ๋ง์คํฐํ๊ธฐ: ํ์ ์์ฑ๊ณผ ๊ทธ ์ํฅ
CSS Scroll Snap์ ๋ชจ๋ฉํ ์์ง์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ํ์ฉํ๋ ค๋ฉด ๊ฐ๋ฐ์๋ ๋ช ๊ฐ์ง ํต์ฌ CSS ์์ฑ์ ์ดํดํ๊ณ ์ ์ฉํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์์ฑ์ ํจ๊ป ์๋ํ์ฌ ์คํฌ๋กค ์ปจํ ์ด๋์ ํด๋น ์์์ ๋์์ ์ ์ํ๊ณ ๊ถ๊ทน์ ์ผ๋ก ์์ฐ์ค๋ฌ์ด ์คํฌ๋กค ๋ฌผ๋ฆฌ์ ๋๋์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
1. scroll-snap-type (์คํฌ๋กค ์ปจํ
์ด๋์ ์ ์ฉ)
์ด๊ฒ์ ์คํฌ๋กค ์ปจํ ์ด๋์์ ์คํฌ๋กค ์ค๋ ์ ํ์ฑํํ๋ ๊ธฐ๋ณธ ์์ฑ์ ๋๋ค. ์ค๋ ์ด ๋ฐ์ํ๋ ์ถ๊ณผ ์ค๋ ๋์์ ์๊ฒฉํจ์ ๊ฒฐ์ ํฉ๋๋ค.
none: ์คํฌ๋กค ์ค๋ ์ด ์์์ ๋ํ๋ด๋ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.x | y | both: ์ค๋ ์ด ๋ฐ์ํ ์ถ ๋๋ ์ถ์ ์ง์ ํฉ๋๋ค. ๊ฐ๋ก ์ด๋ฏธ์ง ์บ๋ฌ์ ์ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋กx๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ธ๋ก๋ก ์์ด๋ ์ ์ฒด ํ๋ฉด ์น์ ์ ๊ฒฝ์ฐy๋ฅผ ์ฌ์ฉํฉ๋๋ค.mandatory: ์ด๊ฒ์ด ๊ฐ๋ ฅํ๊ณ ๋ฌผ๋ฆฌ ๊ธฐ๋ฐ ์ค๋ ์ด ์ง์ ์ผ๋ก ๋น์ ๋ฐํ๋ ๊ณณ์ ๋๋ค.mandatory๋ก ์ค์ ํ๋ฉด ์คํฌ๋กค ์ปจํ ์ด๋๋ ํญ์ ์ค๋ ํฌ์ธํธ์ ๋ฉ์ถฐ์ผ ํฉ๋๋ค. ์ด๋ ๋งค์ฐ ๊ฐ๋ ฅํ๊ณ ์ ์ด๋ ํ์ ๊ฒฝํ์ ์ ๊ณตํ๋ฉฐ ์บ๋ฌ์ ์ด๋ ํ์ด์ง๋ณ ์คํฌ๋กค์ ์ด์์ ์ ๋๋ค. ๋ชจ๋ฉํ ์์ง์ ์ฝํ ์คํฌ๋กค ์ ์ค์ฒ์กฐ์ฐจ๋ ์ฝํ ์ธ ๋ฅผ ์ ์ฒด ์ค๋ ์ง์ ์ผ๋ก ์ด๋ํ๋๋ก ๋ณด์ฅํฉ๋๋ค.proximity:mandatory๋ณด๋ค ๋ ์๊ฒฉํproximity๋ ์คํฌ๋กค์ ์ต์ข ์์น๊ฐ ์ค๋ ์ง์ ์ ์ถฉ๋ถํ ๊ฐ๊น์ด ๊ฒฝ์ฐ์๋ง ์ค๋ ๋ฉ๋๋ค. "์ถฉ๋ถํ ๊ฐ๊น์ด"์ ์ ํํ ์ ์๋ ๋ธ๋ผ์ฐ์ ์์ ๊ฒฐ์ ํ๋ฉฐ, ์ฌ์ฉ์์๊ฒ ๋ ๋ง์ ์์ ๋ฅผ ์ฃผ์ง๋ง ์ฌ์ ํ ์๋ด๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ ์ ํํ ์ ๋ ฌ์ด ๋์์ด ๋์ง๋ง ํ์๋ ์๋ ์ธํฐํ์ด์ค์ ์ ํฉํ๋ฉฐ ์ฝ๊ฐ ๋์จํ๊ณ ํ์ ์ค์ฌ์ ์ธ ๋๋์ ํ์ฉํฉ๋๋ค. ๋ชจ๋ฉํ ์์ง์ ์ฌ์ ํ ์ ์ฉ๋์ง๋ง ์ค๋ ์ ํธ๋ฆฌ๊ฑฐํ ๋งํผ ๊ฐ๊น์ง ์์ผ๋ฉด ์คํฌ๋กค์ด ์์ฐ์ค๋ฝ๊ฒ ์ง์ ์ฌ์ด์ ๋ฉ์ถ๋๋ก ํ ์ ์์ต๋๋ค.
์์ ์ฌ์ฉ๋ฒ: .scroll-container { overflow-x: scroll; scroll-snap-type: x mandatory; }
mandatory์ proximity ์ฌ์ด๋ฅผ ์ ํํ๋ ๊ฒ์ ์ค์ํ ๋์์ธ ๊ฒฐ์ ์
๋๋ค. mandatory๋ ์ฌ์ฉ์์๊ฒ ์ฝํ
์ธ ๋ธ๋ก์์ ๋ค์ ๋ธ๋ก์ผ๋ก ํ๊ณ ํ๊ฒ ์๋ดํ๋ ๋ช
ํํ๊ณ ๋ถํ ๋ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. ๋ชจ๋ฉํ
์์ง์ ์ด ์ ํ์ด ๋ถ๋๋ฝ๊ณ ์์ธก ๊ฐ๋ฅํ๋๋ก ๋ณด์ฅํฉ๋๋ค. proximity๋ ๋ถ๋๋ฌ์ด ์ ์์ ์ ๊ณตํ๋ฉฐ, ๋ชจ๋ฉํ
์ ์ฌ์ ํ ์ญํ ์ ํ์ง๋ง ์ฌ์ฉ์๋ ์ค๊ฐ ๋ฉ์ถค ์ง์ ์ ๋ํด ๋ ํฐ ์ ์ด๋ฅผ ๊ฐ์ต๋๋ค.
2. scroll-snap-align (์คํฌ๋กค ํญ๋ชฉ์ ์ ์ฉ)
์ด ์์ฑ์ ์คํฌ๋กค ํญ๋ชฉ์ ์ค๋ ์์ญ์ด ์คํฌ๋กค ์ปจํ ์ด๋์ ์ค๋ ์์ญ ๋ด์์ ์ด๋ป๊ฒ ์์นํ๋์ง๋ฅผ ์ง์ ํฉ๋๋ค.
start: ์คํฌ๋กค ํญ๋ชฉ์ ์ค๋ ์์ญ ์์์ด ์คํฌ๋กค ์ปจํ ์ด๋์ ์ค๋ ์์ญ ์์๊ณผ ์ ๋ ฌ๋ฉ๋๋ค. ์ผ์ชฝ ๊ฐ์ฅ์๋ฆฌ์ ์๋ฒฝํ๊ฒ ์์ํ๋๋ก ๊ฐ๋ก ๋ชฉ๋ก์ ํญ๋ชฉ์ ์ข ์ข ์ฌ์ฉ๋ฉ๋๋ค.end: ์คํฌ๋กค ํญ๋ชฉ์ ์ค๋ ์์ญ ๋์ด ์คํฌ๋กค ์ปจํ ์ด๋์ ์ค๋ ์์ญ ๋๊ณผ ์ ๋ ฌ๋ฉ๋๋ค.center: ์คํฌ๋กค ํญ๋ชฉ์ ์ค๋ ์์ญ ์ค์์ด ์คํฌ๋กค ์ปจํ ์ด๋์ ์ค๋ ์์ญ ์ค์๊ณผ ์ ๋ ฌ๋ฉ๋๋ค. ์ด๋ ํนํ ์ค๊ฐ ํญ๋ชฉ์ ์ด์ ์ ๋ง์ถ ์ด๋ฏธ์ง ๊ฐค๋ฌ๋ฆฌ ๋๋ ์นด๋ ๋ ์ด์์์์ ์๊ฐ์ ์ผ๋ก ๊ท ํ ์กํ๊ณ ์ข ์ข ์ ํธ๋๋ ์ค๋ ํจ๊ณผ๋ฅผ ๋ง๋ญ๋๋ค. ๋ชจ๋ฉํ ์์ง์ ํญ๋ชฉ์ ์ค์ ์ ๋ ฌ๋ก ์๋ดํฉ๋๋ค.
์์ ์ฌ์ฉ๋ฒ: .scroll-item { scroll-snap-align: center; }
์ ๋ ฌ ์ ํ์ ์ฝํ ์ธ ์ธ์์ ์๋นํ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ํญ๋ชฉ์ ์ค์์ ๋ฐฐ์นํ๋ ๊ฒ์ ๋ณ๋์ ์ฝํ ์ธ ๋ธ๋ก์ ๋ํด ๊ฐ์ฅ ์์ฐ์ค๋ฝ๊ฒ ๋๊ปด์ง๋ฉฐ, ์ ์ฒด ํญ๋ชฉ์ ์ฆ์ ์ด์ ์ ๋ง์ถฅ๋๋ค. ์์ ๋๋ ๋์ ์ ๋ ฌํ๋ ๊ฒ์ ์ฃผ๋ก ๊ฐ์ฅ์๋ฆฌ์์ ๋ค๋ฅธ ๊ฐ์ฅ์๋ฆฌ๋ก ์ค์บํ๋ ์ฌ์ฉ์์๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค.
3. scroll-padding (์คํฌ๋กค ์ปจํ
์ด๋์ ์ ์ฉ)
์ด ์์ฑ์ ์คํฌ๋กค ์ปจํ ์ด๋์ ๊ฐ์ฅ์๋ฆฌ์์ ์คํ์ ์ ์ ์ํฉ๋๋ค. ์ด๊ฒ์ ์ค๋ ํฌ์ธํธ๊ฐ ์ค์ ๋ก ์์นํ๋ ๊ณณ์ ๊ฒฐ์ ํ๋ ์คํฌ๋กค ์ปจํ ์ด๋ ๋ด๋ถ์ ๋ณด์ด์ง ์๋ "ํจ๋ฉ"์ผ๋ก ์๊ฐํ์ญ์์ค. ๊ณ ์ ํค๋๋ ๋ฐ๋ฅ๊ธ์ด ์ค๋ ๋ ์ฝํ ์ธ ๋ฅผ ๊ฐ๋ฆฌ๋ ๊ฒฝ์ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
์์ ์ฌ์ฉ๋ฒ: .scroll-container { scroll-padding-top: 60px; scroll-padding-bottom: 20px; } (60px ๊ณ ์ ํค๋ ๋ฐ 20px ๊ณ ์ ๋ฐ๋ฅ๊ธ์ฉ).
scroll-padding์ ๋ชจ๋ฉํ
์์ง์ด ์ฝํ
์ธ ๋ฅผ ์ค๋
์ง์ ์ผ๋ก ๊ฐ์ ธ์ฌ ๋ ํด๋น ์ฝํ
์ธ ๊ฐ ๋ค๋ฅธ UI ์์ ๋ค์ ์จ๊ฒจ์ง์ง ์๋๋ก ํฉ๋๋ค. ์ค๋
ํ ํ์๋๋ ์์ญ์ด ๋์์ด๋๊ฐ ์๋ํ ๊ฒ๊ณผ ์ ํํ ์ผ์นํ๋๋ก ๋ณด์ฅํ์ฌ ์ฝํ
์ธ ์ ๊ฐ๋
์ฑ๊ณผ ์ํธ ์์ฉ์ ์ต์ ํํฉ๋๋ค.
4. scroll-margin (์คํฌ๋กค ํญ๋ชฉ์ ์ ์ฉ)
scroll-padding๊ณผ ์ ์ฌํ์ง๋ง ์คํฌ๋กค ํญ๋ชฉ ์์ฒด์ ์ ์ฉ๋๋ scroll-margin์ ํญ๋ชฉ ๋ด์ ์ค๋
๋์ ์ฃผ์์ ์คํ์
์ ๋ง๋ญ๋๋ค. ์ด๋ ์ค๋
๋ ํญ๋ชฉ ์ฃผ์์ ์ถ๊ฐ์ ์ธ ์๊ฐ์ ๊ฐ๊ฒฉ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ค๋
ํ ์ปจํ
์ด๋๋ ๋ค๋ฅธ ํญ๋ชฉ์ ๊ฐ์ฅ์๋ฆฌ์ ๋ฑ ๋ถ์ง ์๋๋ก ํฉ๋๋ค.
์์ ์ฌ์ฉ๋ฒ: .scroll-item { scroll-margin-left: 10px; scroll-margin-right: 10px; }
๋ชจ๋ฉํ
์์ง์ด ํญ๋ชฉ์ ํ๋ฉด์ผ๋ก ๊ฐ์ ธ์ฌ ๋ scroll-margin์ ์ฃผ๋ณ์ ์ ์ ํ ์๊ฐ์ ์ฌ์ ๊ณต๊ฐ์ ๋ณด์ฅํ์ฌ, ํนํ ๊ฐ๋ณ ์นด๋๋ ์น์
์ด ์๋ ๋ ์ด์์์์ ๋ ๊น๋ํ๊ณ ์ ๋ฌธ์ ์ธ ํ๋ ์ ํ
์ด์
์ ๊ธฐ์ฌํฉ๋๋ค.
5. scroll-snap-stop (์คํฌ๋กค ์ปจํ
์ด๋์ ์ ์ฉ)
์ด ๋ ์๋ ค์ก์ง๋ง ๊ฐ๋ ฅํ ์์ฑ์ ์ฌ์ฉ์๊ฐ ๋น ๋ฅด๊ฒ ์คํฌ๋กคํ ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ค๋ ํฌ์ธํธ๋ฅผ ๊ฑด๋๋ธ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ ์ดํฉ๋๋ค.
normal: ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ์ฌ์ฉ์๋ ๋จ์ผ์ ๋น ๋ฅธ ์ ์ค์ฒ๋ก ์ฌ๋ฌ ์ค๋ ํฌ์ธํธ๋ฅผ ์คํฌ๋กคํ ์ ์์ต๋๋ค. ๋ชจ๋ฉํ ์์ง์ ์๋๊ฐ ์ถฉ๋ถํ ๋์ผ๋ฉด ์ค๊ฐ ์ง์ ์ ์ง๋ ์คํฌ๋กค์ ์ด์ด๊ฐ๋๋ค.always: ๋น ๋ฅธ ์คํฌ๋กค ์ ์ค์ฒ์์๋ ๋ธ๋ผ์ฐ์ ๊ฐ *๋ชจ๋ * ์ค๋ ํฌ์ธํธ์ ๋ฉ์ถ๋๋ก ๊ฐ์ ํฉ๋๋ค. ์ด๋ ๋งค์ฐ ์ ์คํ๊ณ ๋จ๊ณ๋ณ ํ์์ ์ ๊ณตํฉ๋๋ค. ๋ชจ๋ฉํ ์์ง์ด ํญ์ ๋ค์ ์ฆ๊ฐ์ ์ธ ์ค๋ ๋์์ผ๋ก ์๋ดํ๋๋ก ๋ณด์ฅํ์ฌ ์ฝํ ์ธ ๋ฅผ ์ค์๋ก ๊ฑด๋๋ฐ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค.
์์ ์ฌ์ฉ๋ฒ: .scroll-container { scroll-snap-stop: always; }
scroll-snap-stop: always๋ ์จ๋ณด๋ฉ ํ๋ฆ, ๋จ๊ณ๋ณ ํํ ๋ฆฌ์ผ ๋๋ ์์ฐจ์ ์ฝํ
์ธ ์๋น๊ฐ ์ค์ํ ๋ชจ๋ ์๋๋ฆฌ์ค์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ๋ชจ๋ฉํ
์ด ์ค์๋ก ์ค์ํ ์ ๋ณด๋ฅผ ๊ฑด๋๋ฐ๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์๋ด๋ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
์คํฌ๋กค ์ค๋ ๊ตฌํ: ์์ฐ์ค๋ฌ์ด ๋ฌผ๋ฆฌ๋ ฅ์ ์ด์ฉํ ์ค์ฉ์ ์ธ ์ฌ์
์ด๋ฌํ ์์ฑ์ด ๊ฒฐํฉ๋์ด ์์ฐ์ค๋ฌ์ด ๋ชจ๋ฉํ ์ ๊ฐ์ง ์ํ ์คํฌ๋กค ์ด๋ฏธ์ง ๊ฐค๋ฌ๋ฆฌ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ค์ํ ์ง์ญ์ ์ ํ์ ์ ๋ณด์ด๋ ๊ธ๋ก๋ฒ ์ ์ ์๊ฑฐ๋ ์ฌ์ดํธ๋ฅผ ์์ํด ๋ณด์ธ์.
1๋จ๊ณ: HTML ๊ตฌ์กฐ
๋จผ์ ์คํฌ๋กค ์ปจํ ์ด๋์ ๊ทธ ์์ ์ฌ๋ฌ ์คํฌ๋กค ํญ๋ชฉ์ด ํ์ํฉ๋๋ค. ๊ฐ ํญ๋ชฉ์ ์ ํ ์ด๋ฏธ์ง ๋๋ ์นด๋๋ฅผ ๋ํ๋ ๋๋ค.
<div class="product-gallery"> <div class="gallery-item"><img src="product-a.jpg" alt="์ ๋ฝ์ฐ ์ ํ A"><p>์ ํ A</p></div> <div class="gallery-item"><img src="product-b.jpg" alt="์์์์ฐ ์ ํ B"><p>์ ํ B</p></div> <div class="gallery-item"><img src="product-c.jpg" alt="๋ฏธ์ฃผ์ฐ ์ ํ C"><p>์ ํ C</p></div> <div class="gallery-item"><img src="product-d.jpg" alt="์ํ๋ฆฌ์นด์ฐ ์ ํ D"><p>์ ํ D</p></div> <div class="gallery-item"><img src="product-e.jpg" alt="์ค์ธ์๋์์ฐ ์ ํ E"><p>์ ํ E</p></div> </div>
2๋จ๊ณ: ์คํฌ๋กค ์ปจํ ์ด๋์ฉ CSS
.product-gallery ์ปจํ
์ด๋์ ํ์ ์คํฌ๋กค ์ค๋
์์ฑ์ ์ ์ฉํฉ๋๋ค. ๊ฐ๋ก ์คํฌ๋กค์ ์ํ๋ฉฐ ๊ฐ ํญ๋ชฉ์ ์ ํํ๊ฒ ์ค๋
๋๋๋ก ํ๊ณ ์ถ์ต๋๋ค.
.product-gallery {
display: flex;
overflow-x: scroll;
scroll-snap-type: x mandatory;
scroll-padding: 0 20px; /* ์ ํ ์ฌํญ: ์คํฌ๋กค ์ปจํ
์ด๋ ๊ฐ์ฅ์๋ฆฌ์ ํจ๋ฉ ์ถ๊ฐ */
-webkit-overflow-scrolling: touch; /* iOS ๊ธฐ๊ธฐ์์ ๋ ๋ถ๋๋ฌ์ด ์คํฌ๋กค์ ์ํด */
/* ์ ํ ์ฌํญ: ๋ฏธ์ ๋ชฉ์ ์ ์ํด ์คํฌ๋กค๋ฐ ์จ๊ธฐ๊ธฐ, ๊ทธ๋ฌ๋ ํค๋ณด๋ ํ์์ด ๋ช
ํํ์ง ํ์ธ */
scrollbar-width: none; /* Firefox */
-ms-overflow-style: none; /* IE ๋ฐ Edge */
}
.product-gallery::-webkit-scrollbar {
display: none; /* Chrome, Safari, Opera */
}
์ฌ๊ธฐ์ display: flex;๋ ํญ๋ชฉ์ ๊ฐ๋ก๋ก ๋ฐฐ์นํฉ๋๋ค. overflow-x: scroll;์ ๊ฐ๋ก ์คํฌ๋กค์ ํ์ฑํํฉ๋๋ค. ์ค์ํ ๋ถ๋ถ์ scroll-snap-type: x mandatory;๋ก, ๋ธ๋ผ์ฐ์ ์ x ์ถ์ ๋ฐ๋ผ ์ค๋
ํ๋๋ก ์ง์ํ๊ณ mandatory๋ ํญ์ ํญ๋ชฉ์ ์๋ฒฝํ๊ฒ ์์ฐฉํ๋๋ก ๋ณด์ฅํฉ๋๋ค. -webkit-overflow-scrolling: touch; ์์ฑ(ํ์ค์ ์๋์ง๋ง ๋๋ฆฌ ์ง์๋จ)์ iOS ์ฅ์น์์ ์คํฌ๋กค ์ ์ค์ฒ์ ๋ฐ์์ฑ๊ณผ ๋ชจ๋ฉํ
์ ํฅ์์์ผ ์์ฐ์ค๋ฌ์ด ๋ฌผ๋ฆฌ์ ๋๋์ ํฅ์์ํต๋๋ค.
3๋จ๊ณ: ์คํฌ๋กค ํญ๋ชฉ์ฉ CSS
๋ค์์ผ๋ก .gallery-item์ด ์ค๋
๋ ์ปจํ
์ด๋ ๋ด์์ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ ์ํฉ๋๋ค.
.gallery-item {
flex: 0 0 80%; /* ๊ฐ ํญ๋ชฉ์ ์ปจํ
์ด๋ ๋๋น์ 80%๋ฅผ ์ฐจ์งํฉ๋๋ค */
width: 80%; /* ์ด์ ๋ธ๋ผ์ฐ์ ์ฉ ๋์ฒด */
margin-right: 20px;
scroll-snap-align: center;
scroll-margin-left: 10px; /* ์ ํ ์ฌํญ: ์ค๋
๋ ํญ๋ชฉ ์ฃผ์์ ๊ณต๊ฐ ์ถ๊ฐ */
/* ๋ชจ์์ ์ํ ๊ธฐํ ์คํ์ผ๋ง */
background-color: #f0f0f0;
border-radius: 8px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
}
.gallery-item img {
max-width: 100%;
height: auto;
border-radius: 4px;
margin-bottom: 10px;
}
flex: 0 0 80%; ๊ท์น์ ๊ฐ ํญ๋ชฉ์ด ์ปจํ
์ด๋ ๋๋น์ 80%๋ฅผ ์ฐจ์งํ๋๋ก ํ์ฌ ์ฌ๋ฌ ํญ๋ชฉ์ ๋ณผ ์ ์์ง๋ง ํ๋๊ฐ ์ฃผ๋ก ํ์๋๋๋ก ํฉ๋๋ค. scroll-snap-align: center;๋ ๊ฐ .gallery-item์ ์ค์์ด ์ค๋
๋ ๋ .product-gallery ๋ทฐํฌํธ์ ์ค์๊ณผ ์ ๋ ฌ๋๋๋ก ์ง์ ํฉ๋๋ค. ์ด๋ ์๊ฐ์ ์ผ๋ก ๊ท ํ ์กํ๊ณ ์ง๊ด์ ์ธ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. scroll-margin-left๋ ํญ๋ชฉ์ด ์ค๋
๋ ํ ๊ฐ๊ฒฉ์ ๋์ฑ ์ธ๋ฐํ๊ฒ ์กฐ์ ํฉ๋๋ค.
์ด ์ค์ ์ ํตํด ์ฌ์ฉ์๊ฐ ์ ํ ๊ฐค๋ฌ๋ฆฌ๋ฅผ ์ค์์ดํํ๊ฑฐ๋ ์คํฌ๋กคํ ๋ ๋ธ๋ผ์ฐ์ ์ ๋ชจ๋ฉํ ์์ง์ด ์๋ํฉ๋๋ค. ๋น ๋ฅธ ์ค์์ดํ๋ ๋ถ๋๋ฝ๊ณ ๊ฐ์ํ๋ ์คํฌ๋กค์ ์์ํ์ฌ ํ๋ ์ด์์ ํญ๋ชฉ์ ์ง๋ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๊ณ ๊ฒฐ๊ตญ ์๋ฒฝํ๊ฒ ์ค์์ ์ ๋ ฌ๋ ํญ๋ชฉ์ผ๋ก ๋ฉ์ถฅ๋๋ค. ๋ถ๋๋ฌ์ด ๋์ง๋ ๊ฐ์ฅ ๊ฐ๊น์ด ์ค์ ์ ๋ ฌ ํญ๋ชฉ์ผ๋ก ๋์ฑ ์งง๊ณ equally smoothํ ๊ฐ์์ ๊ฐ์ ธ์ต๋๋ค. ์ด๋ฌํ ์ผ๊ด๋๊ณ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ธ์งํ๋ ๋์์ ๋งค๋ ฅ์ ์ธ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ํน์ง์ ๋๋ค.
์ํธ์์ฉ์ ๋ฌผ๋ฆฌํ: ๋ชจ๋ฉํ ์์ง์ ๋ด๋ถ ์๋์ ๋ํ ์ฌ์ธต ๋ถ์
์น ๊ฐ๋ฐ์๋ก์ ์ฐ๋ฆฌ๋ *๋ฌด์*(์ค๋ ํฌ์ธํธ ๋ฐ ๋์)์ ์ ์ํ์ง๋ง, ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์ *์ด๋ป๊ฒ*(์ค์ ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์ )๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์ด๋ฌํ ์์ ๋ถํ ์ ์ฑ๋ฅ๊ณผ ์ผ๊ด์ฑ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ฌ์ฉ์ ์ ๋ ฅ ํด์
๋ชจ๋ฉํ ์์ง์ ๋จ์ํ ์ ์ ์ ์ธ์ ๋ฐ์ํ๋ ๊ฒ์ด ์๋๋ผ ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฏธ๋ฌํ ์ฐจ์ด์ ๋ฐ์ํ๋ ๋งค์ฐ ๋์ ์ ๋๋ค.
- ํฐ์น์คํฌ๋ฆฐ ์ค์์ดํ: ๋ชจ๋ฐ์ผ ์ฅ์น์์ ๊ฐํ๊ณ ๋น ๋ฅธ ์ค์์ดํ๋ ์คํฌ๋กค์ ๋ ๋ง์ "์ด๊ธฐ ์๋"๋ฅผ ๋ถ์ฌํ์ฌ ์ค๋ ํฌ์ธํธ์ ์ ์ฐฉํ๊ธฐ ์ ์ ๋ ๊ธธ๊ณ ๋ ๋๋๋ฌ์ง ๊ฐ์ ๊ณก์ ์ ์ ๋ฐํฉ๋๋ค. ์งง๊ณ ๋ถ๋๋ฌ์ด ๋๋๊ทธ๋ ๋ ๋น ๋ฅธ ๊ฐ์์ ๊ฐ์ ธ์ต๋๋ค.
- ๋ง์ฐ์ค ํ ์คํฌ๋กค: ๋ง์ฐ์ค ํ ํ์ ์ "ํด๋ฆญ" ์ ๋๋ ์๋๋ ์คํฌ๋กค ์๋๋ก ๋ณํ๋ฉ๋๋ค. ํ ์ ๋น ๋ฅด๊ฒ ํ๊ธฐ๋ฉด ์๋นํ ๋ชจ๋ฉํ
ํจ๊ณผ๊ฐ ๋ฐ์ํ์ฌ ํนํ
scroll-snap-stop: normal์์๋ ์ฌ๋ฌ ์ค๋ ํฌ์ธํธ๋ฅผ ํต๊ณผํ ์ ์์ต๋๋ค. - ํธ๋ํจ๋ ์ ์ค์ฒ: ์ต์ ํธ๋ํจ๋์๋ ์ข ์ข ๋ด์ฅ ๋ชจ๋ฉํ ์คํฌ๋กค์ด ์์ต๋๋ค. CSS Scroll Snap๊ณผ ๊ฒฐํฉํ๋ฉด ํธ๋ํจ๋์ ๋ค์ดํฐ๋ธ ๋ชจ๋ฉํ ์ด ๋ธ๋ผ์ฐ์ ์ ์ค๋ ๋ชจ๋ฉํ ์ผ๋ก ์ํํ๊ฒ ํ๋ฅด๋ ์ด์ค ์ ์ฐํ ๊ฒฝํ์ ๋ง๋ญ๋๋ค.
- ํค๋ณด๋ ํ์: ํค๋ณด๋ ํ์ดํ ํค ๋๋ ํ์ด์ง ์ /๋ค์ด์ ์ฌ์ฉํ๋๋ผ๋ ๋ธ๋ผ์ฐ์ ๋ ์ค๋ ๋ ์น์ ๊ฐ์ ํ์ํ ๋ ๋ฏธ๋ฌํ ์ด์ง ํจ๊ณผ๋ฅผ ๋์ ํ์ฌ ์ ์ด๋ ์์ง์์ ์ผ๊ด๋ ๋๋์ ์ ์งํ ์ ์์ต๋๋ค.
๋ธ๋ผ์ฐ์ ๋ ์ด๋ฌํ ๋ค์ํ ์ ๋ ฅ์ ์ง๋ฅ์ ์ผ๋ก ์ผ๊ด๋ ๋ฌผ๋ฆฌ ๊ธฐ๋ฐ ๋ชจ์ ์ผ๋ก ๋ณํํฉ๋๋ค. ์ด ์ถ์ํ๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋ณต์กํ ์ด๋ฒคํธ ๋ฆฌ์ค๋, ์๋ ๊ณ์ฐ ๋ฐ JavaScript์์ ์ด์ง ํจ์๋ฅผ ๊ตฌํํ๋ ๋ถ๋ด์์ ๋ฒ์ด๋ ๊ณ ๋๋ก ์ต์ ํ๋ ๋ค์ดํฐ๋ธ ์์ง์ด ์ด๋ฅผ ์ฒ๋ฆฌํ๋๋ก ํ ์ ์์ต๋๋ค.
๋ธ๋ผ์ฐ์ ์๊ณ ๋ฆฌ์ฆ ๋ฐ ์ด์ง ํจ์
์ฃผ์ ๋ธ๋ผ์ฐ์ (Chrome, Firefox, Safari, Edge) ๊ฐ๊ฐ์ ์คํฌ๋กค ๋ชจ๋ฉํ ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์์ฒด์ ์ผ๋ก ๊ณ ๋๋ก ์ต์ ํ๋ ๋ด๋ถ ์๊ณ ๋ฆฌ์ฆ๊ณผ ์ด์ง ํจ์๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ ํํ ์ํ์ ๊ณก์ ์ด ์ฝ๊ฐ ๋ค๋ฅผ ์ ์์ง๋ง, ๋ชฉํ๋ ๋ณดํธ์ ์ผ๋ก ๋์ผํฉ๋๋ค. ์ฆ, ์ค์ ๋ฌผ๋ฆฌํ์ ๋ชจ๋ฐฉํ๋ ์๊ฐ์ ์ผ๋ก ๋ถ๋๋ฝ๊ณ ์ธ์์ ์ผ๋ก ์์ฐ์ค๋ฌ์ด ๊ฐ์์ ๋ง๋๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ํจ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ค๊ณ๋์์ต๋๋ค.
- ๋น ๋ฅด๊ฒ ์์ํ๊ณ ๋๋ฆฌ๊ฒ ๋๋ด๊ธฐ: ๊ฐ์์ ์ผ๋ฐ์ ์ผ๋ก ์ ํ์ ์ด์ง ์์ต๋๋ค. ์ข ์ข ease-out ๊ณก์ ์ด๋ฉฐ, ์ด๋ ์คํฌ๋กค์ด ์ฒ์์ ๋น ๋ฅด๊ฒ ๋๋ ค์ง๋ค๊ฐ ์ค๋ ํฌ์ธํธ์ ๊ฐ๊น์์ง์๋ก ์ ์ฐจ์ ์ผ๋ก ๋๋ ค์ง๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๊ฐ์ฒด๊ฐ ๋ชจ๋ฉํ ์ ์๋ ๋ฐฉ์์ ๋ชจ๋ฐฉํ์ฌ ๋ฉ์ถค์ด ๋ ๊ฐ์์ค๋ฝ๊ฒ ๋๊ปด์ง๋๋ก ํฉ๋๋ค.
- ์ค๋ ํฌ์ธํธ ์์ธก: ์์ง์ ํ์ฌ ์๋์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ค๋ ํฌ์ธํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ ์ฐฉ์ง ์ง์ ์ ์ง์์ ์ผ๋ก ๊ณ์ฐํฉ๋๋ค. ์ด๋ฌํ ์์ธก ๊ธฐ๋ฅ์ ํตํด ๋์ ์ผ๋ก ๊ฐ์ ๊ณก์ ์ ์กฐ์ ํ์ฌ ์ ํํ๊ณ ์ฐ์ํ ๋์ฐฉ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
- ์์ ์ฑ ๋ณด์ฅ: ์ต์ข ์ ๋ ฌ์ด ์ ํํ์ฌ ๋ ์ ํํ JavaScript ๊ธฐ๋ฐ ์๋ฃจ์ ์์ ์ข ์ข ๋ณด์ด๋ "ํ๋ค๋ฆฌ๋" ํจ๊ณผ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
์ด๋ฌํ ๋ค์ดํฐ๋ธ ๊ธฐ๋ฅ์ ํ์ฉํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ฌ์ฉ์ ์ ์ ๊ตฌํ์ ์๋นํ ๋ ธ๋ ฅ๊ณผ ์ ์ฌ์ ํจ์ ์์ด ๊ฐ๋ ฅํ๊ณ ์ฑ๋ฅ์ด ์ฐ์ํ๋ฉฐ ์ผ๊ด๋ ์คํฌ๋กค ๋ฌผ๋ฆฌ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์ด๋ ์์ฐ์ค๋ฌ์ด ๋๋์ด ์ธ์ด์ ๋ฌธํ์ ์ฅ๋ฒฝ์ ์ด์ํ์ฌ ๋ชจ๋ ์ฌ๋์๊ฒ ์ง๊ด์ ์ธ ๊ฒฝํ์ ์ ๊ณตํ๋ฏ๋ก ํนํ ๊ธ๋ก๋ฒ ์ฌ์ฉ์์๊ฒ ์ ๋ฆฌํฉ๋๋ค.
์์ฐ์ค๋ฌ์ด ์คํฌ๋กค ๋ฌผ๋ฆฌ๋ฅผ CSS Scroll Snap๊ณผ ํตํฉํ๋ ์ค์ง์ ์ธ ์ด์
CSS Scroll Snap๊ณผ ๋ด์ฅ ๋ชจ๋ฉํ ์์ง์ ์ฑํ์ ๋ค์ํ ์น ํ๋ก์ ํธ์ ์ ์ธ๊ณ์ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ๊ฑธ์ณ ๊ณต๊ฐํ๋ ์๋ง์ ์ด์ ์ ๊ฐ์ ธ์ต๋๋ค.
1. ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ (UX)
- ์ ์ฐ์ฑ๊ณผ ์ฆ๊ฑฐ์: ๋ถ๋๋ฝ๊ณ ๋ฌผ๋ฆฌ ๊ธฐ๋ฐ์ ์ ํ์ ์ฝํ ์ธ ํ์์ ๋ ์ฆ๊ฒ๊ณ ๋ง์กฑ์ค๋ฌ์ด ๊ฒฝํ์ผ๋ก ๋ง๋ญ๋๋ค. ์ฌ์ฉ์๋ ์ง๊ด์ ์ด๊ณ ์ฐ์ํ๊ฒ ๋ฐ์ํ๋ ์ธํฐํ์ด์ค๋ฅผ ๋์ด ํ๊ฐํ๋ฉฐ, ์ด๋ ์ฐธ์ฌ๋๋ฅผ ๋์ด๊ณ ๋์ ํ์ง์ ๋ํ ์ธ์์ ๋์ ๋๋ค. ์ด "์ฆ๊ฑฐ์ ์์"๋ ๋ณดํธ์ ์ ๋๋ค.
- ์์ธก ๊ฐ๋ฅ์ฑ๊ณผ ์ ์ด: ์ฌ์ฉ์๋ ์์ ์ ์คํฌ๋กค ์ ์ค์ฒ๊ฐ ์์ธก ๊ฐ๋ฅํ๊ฒ ์์ ํ ์ ๋ ฌ๋ ์ฝํ ์ธ ๋ธ๋ก์ผ๋ก ์ด์ด์ง๋ค๋ ๊ฒ์ ๋น ๋ฅด๊ฒ ๋ฐฐ์๋๋ค. ์ด๋ฅผ ํตํด ์ถ์ธก๊ณผ ์ข์ ์ ์ค์ด๊ณ ๋ธ๋ผ์ฐ์ ๊ฐ ์ต์ข ์์ง์์ ์๋ดํ๋๋ผ๋ ์ธํฐํ์ด์ค์ ๋ํ ๋ช ํํ ์ ์ด ๊ฐ๊ฐ์ ๊ฐ๊ฒ ๋ฉ๋๋ค.
- ์ฑ๊ณผ ๊ฐ์ ๋๋: CSS Scroll Snap์ ๋ค์ดํฐ๋ธ ๋ชจ๋ฐ์ผ ๋ฐ ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํํ ๋ณผ ์ ์๋ ๋ถ๋๋ฌ์ด ๋ชจ๋ฉํ ์คํฌ๋กค์ ๋ชจ๋ฐฉํจ์ผ๋ก์จ ์น๊ณผ ๋ค์ดํฐ๋ธ ํ๋ซํผ ๊ฐ์ ๊ฒฝํ ๊ฒฉ์ฐจ๋ฅผ ํด์ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ด๋ฌํ ์น์ํจ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๊ฐ๋ ฅํ๊ณ ํตํฉ๋ ๋๋์ผ๋ก ๋ง๋ญ๋๋ค.
2. ๊ฐ์ ๋ ์ ๊ทผ์ฑ ๋ฐ ํฌ์ฉ์ฑ
- ๋ช ํํ ์ฝํ ์ธ ๋ถํ : ์ธ์ง์ ์ฐจ์ด๊ฐ ์๋ ์ฌ์ฉ์ ๋๋ ๊ตฌ์กฐํ๋ ์ฝํ ์ธ ์ ์ด์ ์ ์ป๋ ์ฌ์ฉ์์ ๊ฒฝ์ฐ, ์ค๋ ์ ํตํด ์ ๊ณต๋๋ ๋ช ํํ ๊ตฌ๋ถ์ ๊ฐ ์ฝํ ์ธ ๋ธ๋ก์ด ๋ณ๋์ ๊ด๋ฆฌ ๊ฐ๋ฅํ ๋จ์๋ก ์ ์๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์ด๋ ์ฅ์ ๋ฅผ ์ํ ์์ธก ๊ฐ๋ฅํ ํ์: ๋ฏธ์ธ ์ด๋ ์ ์ด์ ์ด๋ ค์์ด ์๋ ์ฌ์ฉ์๋ ์ข ์ข ์ ๋ฐํ ์คํฌ๋กค์ ์ด๋ ค์์ ๊ฒช์ต๋๋ค. ์ฝํ ์ธ ๋ฅผ ์๋์ผ๋ก ์ ๋ ฌํ๋ ์คํฌ๋กค ์ค๋ ์ ๊ธฐ๋ฅ์ ํฝ์ ๋จ์์ ์กฐ์ ํ์์ฑ์ ์ค์ฌ ํ์์ ๋ ์ฝ๊ณ ๋ ์ข์ ์ค๋ฝ๊ฒ ๋ง๋ญ๋๋ค. ๋ชจ๋ฉํ ์ ๊ฐ์์ค๋ฌ์ด ๋ฉ์ถค ๋์ ๋ถ๋๋ฌ์ด ๋ฉ์ถค์ ๋ณด์ฅํฉ๋๋ค.
- ํค๋ณด๋ ๋ฐ ๋ณด์กฐ ๊ธฐ์ ์นํ์ : ํค๋ณด๋ ๋๋ ํ๋ฉด ํ๋ ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ํ ๋ ์ค๋ ์ ํตํด ์ ์๋ ์ง์ ์ผ๋ก ์ด๋ํ๋ฉด ์ด์ ์ด ๋ชจํธํ ์ค๊ฐ ์์น๊ฐ ์๋ ์ ์ฒด ์ฝํ ์ธ ๋ธ๋ก์ ๋ ผ๋ฆฌ์ ์ผ๋ก ์์ฐฉ๋๋๋ก ํฉ๋๋ค. ์ด๋ ๋ ์ผ๊ด๋๊ณ ํ์ ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
3. ๋งค๋ ฅ์ ์ธ ์ฝํ ์ธ ํ๋ ์ ํ ์ด์ ๋ฐ ์คํ ๋ฆฌํ ๋ง
- ์๊ฐ์ ์คํ ๋ฆฌํ ๋ง: ์ ์ฒด ํ๋ฉด ์ด๋ฏธ์ง, ๋น๋์ค ๋๋ ํ ์คํธ ๋ธ๋ก์ ์ฐ์์ ํตํด ๋งค๋ ฅ์ ์ธ ๋ด๋ฌํฐ๋ธ๋ฅผ ๋ง๋๋ ๋ฐ ์ด์์ ์ ๋๋ค. ๊ฐ ์ค๋ ์ ์๋ก์ด ์ฅ์ด๋ ์ ๋ณด ์กฐ๊ฐ์ ๋๋ฌ๋ด๋ฉฐ, ํ๋ ์ด์ ๋ ๊ฒฝํ์ ํตํด ์ฌ์ฉ์๋ฅผ ์๋ดํฉ๋๋ค. ์ ์ธ๊ณ ์คํ ๋ฆฌํ ๋ง ์ด๋์ ํฐ๋ธ์ ์๋ฒฝํฉ๋๋ค.
- ์ง์ค๋ ์ฃผ์: ์ฝํ ์ธ ๊ฐ ํญ์ ํ๋ฉด์ ์๋ฒฝํ๊ฒ ํ์๋๋๋ก ๋ณด์ฅํจ์ผ๋ก์จ ์คํฌ๋กค ์ค๋ ์ ์ฌ์ฉ์์ ์ฃผ์๋ฅผ ํ๋ฉด์ ์ฃผ์ ์์๋ก ํฅํ๊ฒ ํ์ฌ ์ฐ๋งํจ์ ์ต์ํํ๊ณ ์๊ฐ ๋ฐ ํ ์คํธ ์ ๋ณด์ ์ํฅ์ ๊ฐํํฉ๋๋ค.
- ์ธํฐ๋ํฐ๋ธ ๊ฐค๋ฌ๋ฆฌ ๋ฐ ์บ๋ฌ์ : ์ ์ ์ด๋ฏธ์ง ๊ฐค๋ฌ๋ฆฌ๋ฅผ ๋ง์กฑ์ค๋ฌ์ด ์ธํฐ๋ํฐ๋ธ ๊ฒฝํ์ผ๋ก ๋ณํํฉ๋๋ค. ์ฌ์ฉ์๋ ์์ฐ์ค๋ฌ์ด ํ๋ฆ์ผ๋ก ์ ํ ์ฌ์ง, ํฌํธํด๋ฆฌ์ค ์ํ ๋๋ ๋ด์ค ํค๋๋ผ์ธ์ ์ค์์ดํํ๋ฉฐ ํ์์ ์ฅ๋ คํ ์ ์์ต๋๋ค.
4. ํฌ๋ก์ค ๋๋ฐ์ด์ค ์ผ๊ด์ฑ ๋ฐ ๋ฐ์์ฑ
- ํตํฉ๋ ๊ฒฝํ: CSS Scroll Snap์ ๋ค์ดํฐ๋ธ ๋ธ๋ผ์ฐ์ ๊ตฌํ์ ์๋ก ๋ค๋ฅธ ์ฅ์น, ์ด์ ์ฒด์ ๋ฐ ์ ๋ ฅ ๋ฐฉ๋ฒ ๊ฐ์ ์ผ๊ด๋ ์คํฌ๋กค ๋์์ ๋ณด์ฅํฉ๋๋ค. ์ค๋งํธํฐ์ ํฐ์น ์ ์ค์ฒ, ๋ ธํธ๋ถ์ ํธ๋ํจ๋ ์ค์์ดํ, ๋ฐ์คํฌํฑ์ ๋ง์ฐ์ค ํ ์คํฌ๋กค์ ๋ชจ๋ ์ ์ฌํ ๋ฌผ๋ฆฌ ๊ธฐ๋ฐ ์๋ต์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
- ๋ชจ๋ฐ์ผ ์ฐ์ ์ต์ ํ: ํฐ์น์คํฌ๋ฆฐ์ ๋ณด๊ธ๋ฅ ์ ๊ณ ๋ คํ ๋, ์คํฌ๋กค ์ค๋ ์ ์์ฐ์ค๋ฌ์ด ๋ชจ๋ฉํ ์ ๋ชจ๋ฐ์ผ ์น ๊ฒฝํ์ ํนํ ์ ์ตํฉ๋๋ค. ํ๋ ์ค๋งํธํฐ ๋ฐ ํ๋ธ๋ฆฟ ์ฌ์ฉ ํจํด์ ๋ค์ดํฐ๋ธ์ ์ผ๋ก ๋๊ปด์ง๋ ํฐ์น ์นํ์ ์ธ ์ํธ ์์ฉ์ ์ ๊ณตํ๋ฉฐ, ์ด๋ ์ ์ธ๊ณ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ์ ์ฌ ๊ณ ๊ฐ์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.
5. ์ธ์ง ๋ถํ ๋ฐ ์ฌ์ฉ์ ํผ๋ก ๊ฐ์
- ์์ฌ์ด ์ ๋ ฌ: ์ฌ์ฉ์๋ ๋ ์ด์ ์ฝํ ์ธ ๋ฅผ ๋ทฐํฌํธ์ ์ ํํ๊ฒ ๋ฐฐ์นํ๊ธฐ ์ํด ์ ์ ์ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์ผ ํ์๊ฐ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์ ๋ชจ๋ฉํ ์์ง์ด ์ ํํ ์ ๋ ฌ์ ์ฒ๋ฆฌํ์ฌ ์ฝํ ์ธ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ธ์ง ๋ฆฌ์์ค๋ฅผ ํ๋ณดํฉ๋๋ค.
- ๋ฅ๋ฅ ์ ์ธ ์์ ์๋ฃ: ๋ค๋จ๊ณ ์์, ์จ๋ณด๋ฉ ํ๋ฆ ๋๋ ์์ฐจ์ ๋ฐ์ดํฐ ํ๋ ์ ํ ์ด์ ์ ๊ฒฝ์ฐ ์คํฌ๋กค ์ค๋ ์ ๋ช ํํ ๊ฐ๋ณ ๋จ๊ณ๋ฅผ ํ์ํ๊ณ ์ฌ์ฉ์๊ฐ ๊ฐ ๋จ๊ณ์ ์ ํํ๊ฒ ์์ฐฉํ๋๋ก ํ์ฌ ์งํ์ ๋จ์ํํฉ๋๋ค.
์์ฐ์ค๋ฌ์ด ์คํฌ๋กค ๋ฌผ๋ฆฌ๋ฅผ ์ํ ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก ๋ฐ ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์
์์ฐ์ค๋ฌ์ด ๋ชจ๋ฉํ ์์ง์ผ๋ก ๊ตฌ๋๋๋ CSS Scroll Snap์ ๋ค์ฌ๋ค๋ฅํจ์ ๋ค์ํ ์น ์ธํฐํ์ด์ค์ ์ ์ฉํ ์ ์์ผ๋ฉฐ, ๋ค์ํ ์ฐ์ ๋ฐ ์ง๋ฆฌ์ ์์น์ ๊ฑธ์ณ ๋ณดํธ์ ์ธ ์ด์ ์ ์ ๊ณตํฉ๋๋ค.
1. ์ ์ ์๊ฑฐ๋ ์ ํ ๊ฐค๋ฌ๋ฆฌ ๋ฐ ์ผ์ผ์ด์ค
์ ์ธ๊ณ ํจ์ ์ ์ ์๊ฑฐ๋ ์๋งค์ ์ฒด๋ฅผ ์์ํด ๋ณด์ธ์. ๋ค์ํ ๋๋ฅ์ ์ฌ์ฉ์๊ฐ ์ ๋ฌํ ์ปฌ๋ ์ ์ ํ์ํฉ๋๋ค. ์ ํ์ ๋ณผ ๋ CSS Scroll Snap์ ์ฌ์ฉํ ๊ฐ๋ก ์ด๋ฏธ์ง ๊ฐค๋ฌ๋ฆฌ๋ฅผ ํตํด ๊ณ ํด์๋ ์๋ฅ ์ด๋ฏธ์ง๋ฅผ ์ฝ๊ฒ ์ค์์ดํํ ์ ์์ต๋๋ค. ๊ฐ ์ด๋ฏธ์ง๋ ๋ง์กฑ์ค๋ฝ๊ณ ๋ถ๋๋ฌ์ด ๋ชจ๋ฉํ ์ผ๋ก ์๋ฒฝํ๊ฒ ๋ณด๊ธฐ ์ข๊ฒ ์ค๋ ๋์ด ์คํฐ์น, ์ง๋ฌผ ์ง๊ฐ ๋๋ ๋ค์ํ ๊ฐ๋์์ ๋ณด์ด๋ ๋ฐฉ์๊ณผ ๊ฐ์ ์ธ๋ถ ์ฌํญ์ ๊ฐ์กฐํฉ๋๋ค. ์ด ์ ์ฐํ ์ํธ ์์ฉ์ ์ผํ ๊ฒฝํ์ ํฅ์์์ผ ์ฌ์ฉ์๊ฐ ๋ถ์ ํํ ์คํฌ๋กค๊ณผ ์จ๋ฆํ๋ ๋์ ์ ํ์ ์ง์คํ ์ ์๋๋ก ํฉ๋๋ค. ์ผ๊ด๋ ์ค๋ ๋์์ ๋์ฟ์ ๊ณ ๊ธ ์ค๋งํธํฐ์ ์ฌ์ฉํ๋ ๋ฐ๋์ ๋ฐ์คํฌํฑ ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ๋ ์ํธ ์์ฉ์ด ๋๊ฐ์ด ์ง๊ด์ ์ด๊ณ ๊ณ ๊ธ์ค๋ฝ๊ฒ ๋๊ปด์ง๋๋ก ๋ณด์ฅํฉ๋๋ค.
2. ๋๋ฉ ํ์ด์ง ๋ฐ ํฌํธํด๋ฆฌ์ค๋ฅผ ์ํ ์ ์ฒด ํ๋ฉด ์น์ ํ์
๊ธ๋ก๋ฒ ๊ธฐ์ ํ์ฌ์ ๋๋ฉ ํ์ด์ง ๋๋ ๊ตญ์ ์์ ๊ฐ์ ์จ๋ผ์ธ ํฌํธํด๋ฆฌ์ค๋ฅผ ์๊ฐํด ๋ณด์ธ์. ๊ฐ ์น์
(์: "๋น์ ", "์ ํ", "ํ", "์ฐ๋ฝ์ฒ")์ ์ ์ฒด ๋ทฐํฌํธ๋ฅผ ์ฐจ์งํฉ๋๋ค. scroll-snap-type: y mandatory; ๋ฐ scroll-snap-align: start;๋ฅผ ์ฌ์ฉํ ์ธ๋ก ์คํฌ๋กค ์ค๋
์ ์ ๋๋ ์๋๋ก ์คํฌ๋กคํ ๋ ํญ์ ๋ค์ ์น์
์ ์์ ๋ถ๋ถ์ ์ ํํ๊ฒ ์์ฐฉ๋๋๋ก ํฉ๋๋ค. ๋ชจ๋ฉํ
์์ง์ ์ด๋ฌํ ์น์
๊ฐ์ ๋ถ๋๋ฝ๊ฒ ์ ํํ์ฌ ์ฝํ
์ธ ์ ์๋ค๋งํฑํ๊ณ ์๋ด๋ ํฌ์ด๋ฅผ ๋ง๋ญ๋๋ค. ์ด๋ ์ ํ ์คํ ๋ฆฌ๋ฅผ ์ ๋ฌํ๊ฑฐ๋ ์๊ฐ์ ํผ๋ ์์ด ๋ณ๋์ ์ฝํ
์ธ ๋ธ๋ก์ ์ ์ํ๋ ๋ฐ ํนํ ํจ๊ณผ์ ์ด๋ฉฐ, ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ํด์๋๋ฅผ ๊ฐ์ง ์ ์ธ๊ณ ์ฌ์ฉ์๊ฐ ์ฝํ
์ธ ์ ์ ๊ทผํ๊ณ ์ฐธ์ฌํ ์ ์๋๋ก ํฉ๋๋ค.
3. ๋ด์ค ๋ฐ ํผ๋๋ฅผ ์ํ ๊ฐ๋ก ์ฝํ ์ธ ์บ๋ฌ์
๊ธ๋ก๋ฒ ๋ด์ค ์ ๊ทธ๋ฆฌ๊ฒ์ดํฐ ๋๋ ๋ค๊ตญ์ด ์ฝํ
์ธ ํ๋ซํผ์ ์ข
์ข
๋ง์ ๊ธฐ์ฌ๋ ์ธ๊ธฐ ์๋ ์ฃผ์ ๋ฅผ ์ปดํฉํธํ๊ณ ์คํฌ๋กค ๊ฐ๋ฅํ ํ์์ผ๋ก ํ์ํด์ผ ํฉ๋๋ค. CSS Scroll Snap์ ์ฌ์ฉํ ๊ฐ๋ก ์บ๋ฌ์
์ ํตํด ์ฌ์ฉ์๋ ํค๋๋ผ์ธ, ๊ธฐ์ฌ ์นด๋ ๋๋ ์งง์ ์์ฝ์ ๋น ๋ฅด๊ฒ ์ค์์ดํํ ์ ์์ต๋๋ค. scroll-snap-type: x proximity;๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ์ฝํ
์ธ ๋ฅผ ์์ ๋กญ๊ฒ ํ์ํ ์ ์์ง๋ง, ๋ถ๋๋ฌ์ด ๋ชจ๋ฉํ
์ ์คํฌ๋กค์ ๋ฉ์ถ ๋ ์นด๋๊ฐ ์ค๋
์ง์ ์ ๊น๋ํ๊ฒ ์์ฐฉ๋๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด ๋์์ธ ํจํด์ ์์ ์ฅ์น์์ ํ๋ฉด ๊ณต๊ฐ์ ์ต์ ํํ๋ ๋ฐ ํ์ํ๋ฉฐ ์ฌ์ฉ์๊ฐ ์ ์ธ๊ณ์ ์๋ก์ด ์ฝํ
์ธ ๋ฅผ ๋ฐ๊ฒฌํ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
4. ์จ๋ณด๋ฉ ํ๋ก์ธ์ค ๋ฐ ๋จ๊ณ๋ณ ํํ ๋ฆฌ์ผ
๊ตญ์ SaaS ์ ํ, ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์
๋๋ ๊ต์ก ํ๋ซํผ์ ๊ฒฝ์ฐ ์ ์ฌ์ฉ์๋ฅผ ์จ๋ณด๋ฉํ๊ฑฐ๋ ๋ณต์กํ ๊ธฐ๋ฅ์ ์๋ดํ๋ ค๋ฉด ๋ช
ํ์ฑ๊ณผ ์ ๋ฐ์ฑ์ด ํ์ํฉ๋๋ค. ๋ค๋จ๊ณ ํํ ๋ฆฌ์ผ์ scroll-snap-type: y mandatory; ๋ฐ scroll-snap-stop: always;๋ฅผ ์ฌ์ฉํ ์ธ๋ก ์คํฌ๋กค ์ค๋
์ ํ์ฉํ ์ ์์ต๋๋ค. ์ด ์กฐํฉ์ ์ฌ์ฉ์๊ฐ ๊ฐ ๋จ๊ณ๋ฅผ ์์ฐจ์ ์ผ๋ก ๋ด์ผ ํ๋๋ก ๋ณด์ฅํฉ๋๋ค. ๊ฒฉ๋ ฌํ ์คํฌ๋กค ์ ์ค์ฒ์กฐ์ฐจ๋ ๋ชจ๋ ์ค๊ฐ ๋จ๊ณ์์ ๋ฉ์ถ์ด ์ค์๋ก ๊ฑด๋๋ฐ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. ์์ฐ์ค๋ฌ์ด ๋ชจ๋ฉํ
์ ๋จ๊ณ ๊ฐ์ ๋ถ๋๋ฌ์ด ์ ํ์ ์ ๊ณตํ์ง๋ง, always ์ค์ง๋ ๊ฐ ์ ๋ณด ์กฐ๊ฐ์ ๋ํ ์์ ํ ์ง์ค์ ๋ณด์ฅํ์ฌ ๋ค์ํ ์ธ์ด ๋ฐ ๊ต์ก์ ๋ฐฐ๊ฒฝ์ ์ฌ์ฉ์์๊ฒ ์ค์ํฉ๋๋ค.
5. ์นด๋ ๊ธฐ๋ฐ ์ธํฐํ์ด์ค ๋ฐ ํผ๋ ์คํ์ผ ๋ ์ด์์
์์
๋ฏธ๋์ด ํ๋ซํผ, ๋ ์ํผ ์ฌ์ดํธ ๋๋ ์คํธ๋ฆฌ๋ฐ ์๋น์ค ์ธํฐํ์ด์ค๋ ์ข
์ข
์นด๋ ๊ธฐ๋ฐ ๋ ์ด์์์ ์ฌ์ฉํฉ๋๋ค. ๋ค์ํ ์ฝํ
์ธ (์: ๊ฒ์๋ฌผ, ๋ ์ํผ, ์ํ ์ถ์ฒ)์ ํผ๋๋ ์ธ๋ก ์คํฌ๋กค ์ค๋
์ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๋์๋ ํผ๋๋ฅผ ์คํฌ๋กคํจ์ ๋ฐ๋ผ ๊ฐ ์ฝํ
์ธ ์นด๋๋ scroll-snap-align: start; ๋๋ center;๋ฅผ ์ฌ์ฉํ์ฌ ์ฃผ์ ์์น๋ก ์ค๋
๋ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ํผ๋ ๋ด์ ๊ฐ๋ณ ํญ๋ชฉ์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์๋ณํ๊ณ ์ง์คํ ์ ์์ด ์ค์บ ํ๋ก์ธ์ค๊ฐ ๋ ์๋์ ์
๋๋ค. ๋ชจ๋ฉํ
์์ง์ ์ด๋ฌํ ์๋ด ์ด์ ์ด ์ฌ์ฉ์์ ์
๋ ฅ ๋ฐฉ๋ฒ์ ๊ด๊ณ์์ด ๋ถ๋๋ฝ๊ณ ๋ฐฉํด๋์ง ์๋ ๋ชจ์
์ผ๋ก ๋ฌ์ฑ๋๋๋ก ํฉ๋๋ค.
๊ตฌํ์ ์ํ ๊ณ ๊ธ ๊ณ ๋ ค ์ฌํญ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
CSS Scroll Snap์ ๊ฐ๋ ฅํ์ง๋ง, ์ต์ ์ ๊ตฌํ์ ์ํด์๋ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ๊ฐ๋ ฅํ๊ณ ์ฑ๋ฅ์ด ์ฐ์ํ๋ฉฐ ํฌ์ฉ์ ์ธ ๊ฒฝํ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ค์ํ ์์๋ฅผ ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
1. JavaScript์์ ๊ฒฐํฉ (์ ์คํ๊ฒ)
CSS Scroll Snap์ ์ ์ธ์ ์๋ฃจ์ ์ผ๋ก, ๋ธ๋ผ์ฐ์ ๊ฐ ๋๋ถ๋ถ์ ๋ฌด๊ฑฐ์ด ์์ ์ ์ฒ๋ฆฌํฉ๋๋ค. ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์ฑ๋ฅ์ ์ ๋ฆฌํฉ๋๋ค. ๊ทธ๋ฌ๋ JavaScript๋ ํน์ ์๋๋ฆฌ์ค์์ ์คํฌ๋กค ์ค๋ ์ *ํฅ์*์ํค๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ผ๋ฉฐ *๋์ฒด*ํ์ง ์์ต๋๋ค.
- ๋์ ์ฝํ ์ธ ๋ก๋ฉ: ์ฌ์ฉ์๊ฐ ์คํฌ๋กคํจ์ ๋ฐ๋ผ ์คํฌ๋กค ์ปจํ ์ด๋๊ฐ ์ ํญ๋ชฉ์ ๋ก๋ํ๋ ๊ฒฝ์ฐ(์: ๋ฌดํ ์คํฌ๋กค), JavaScript๋ ์ฌ์ฉ์๊ฐ ๋์ ์ ๊ทผํ ๋ ์ด๋ฅผ ๊ฐ์งํ๊ณ , ์ ์ฝํ ์ธ ๋ฅผ ๊ฐ์ ธ์จ ๋ค์, ์คํฌ๋กค ์ค๋ ํฌ์ธํธ๋ฅผ ๋ค์ ํ๊ฐํ๋ ๋ฐ ํ์ํฉ๋๋ค.
- ์ฌ์ฉ์ ์ง์ ํ์ ํ์๊ธฐ: ๊ฐค๋ฌ๋ฆฌ์ ๊ฒฝ์ฐ ํ์ฌ ์ค๋
๋ ํญ๋ชฉ์ ์๊ฐ์ ์ผ๋ก ๋ํ๋ด๋ ์ ์ด๋ ํ์ดํ๋ฅผ ์ํ ์ ์์ต๋๋ค. JavaScript๋
scrollend์ด๋ฒคํธ๋ฅผ ์์ ํ๊ฑฐ๋(๋๋scroll์ด๋ฒคํธ์ ๊ธฐ๋ฐํ์ฌ ํ์ฑ ํญ๋ชฉ์ ๊ณ์ฐ) ์ด๋ฌํ ํ์๊ธฐ๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. - ๋ถ์ ๋ฐ ์ถ์ : ์ฌ์ฉ์๊ฐ ์ด๋ค ํญ๋ชฉ์ ์ค๋ ํ๋์ง ๋๋ ๊ฐ ์ค๋ ๋ ํญ๋ชฉ์ ์ผ๋ง๋ ์ค๋ ๋ณด๋์ง ์ถ์ ํ๋ ค๋ฉด JavaScript๊ฐ ๋ ์ธ๋ถํ๋ ๋ฐ์ดํฐ ์์ง์ ์ํ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
ํต์ฌ์ JavaScript๋ฅผ ์ต์ํ์ผ๋ก ์ฌ์ฉํ๊ณ CSS๋ก๋ ๋ฌ์ฑํ ์ ์๋ ๊ธฐ๋ฅ์๋ง ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ํต์ฌ ์คํฌ๋กค ๋ ผ๋ฆฌ์ JavaScript์ ๊ณผ๋ํ๊ฒ ์์กดํ๋ฉด CSS Scroll Snap์ ์ฑ๋ฅ ์ด์ ์ ๋ฌดํจํํ๊ณ ๋ชจ๋ฉํ ๋๋์ ๋ถ์ผ์น๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
2. ์ฑ๋ฅ ๊ณ ๋ ค ์ฌํญ
CSS Scroll Snap์ ์ฃผ์ ์ด์ ์ค ํ๋๋ ์ฑ๋ฅ์ ๋๋ค. ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์ ์ํด ๋ค์ดํฐ๋ธ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ฏ๋ก ์ฌ์ฉ์ ์ ์ JavaScript ์คํฌ๋กค ์๋ฃจ์ ๋ณด๋ค ์ผ๋ฐ์ ์ผ๋ก ํจ์ฌ ๋ ์ต์ ํ๋์ด ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ์ปดํฌ์งํฐ ์ค๋ ๋์์ ์คํฌ๋กค ์ค๋ ์ ์ํํ ์ ์์ผ๋ฉฐ, ์ด๋ ๋งค์ฐ ํจ์จ์ ์ด๊ณ ๋ฉ์ธ ์ค๋ ๋์ JavaScript ์คํ์ผ๋ก ์ธํด ์ฐจ๋จ๋ ๊ฐ๋ฅ์ฑ์ด ์ ์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ ๋ถ๋๋ฌ์ด ์ ๋๋ฉ์ด์ , ๋ ๋์ ํ๋ ์ ์๋ ๋ฐ ๋ ๋ฐ์์ด ๋น ๋ฅธ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ป์ ์ ์์ผ๋ฉฐ, ์ด๋ ๋ค์ํ ์ฅ์น์์ ์ฝํ ์ธ ์ ์ก์ธ์คํ๋ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด ๋งค์ฐ ์ค์ํฉ๋๋ค.
3. ๋ธ๋ผ์ฐ์ ํธํ์ฑ ๋ฐ ๋์ฒด
CSS Scroll Snap์ ์ต์ ๋ธ๋ผ์ฐ์ (Chrome, Firefox, Safari, Edge, Opera ๋ฑ) ์ ๋ฐ์์ ํ๋ฅญํ ์ง์์ ๋ฐ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ธ๋ผ์ฐ์ ๋ฒ์ ๋๋ ํ์ ํ๊ฒฝ์ ๊ฒฝ์ฐ ์ ์ง์ ์ธ ์ ํ๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ ์ฒด ํด๋ฆฌํ์ ๋ณต์กํ๊ณ ์ฑ๋ฅ ์ค๋ฒํค๋๋ก ์ธํด ์ผ๋ฐ์ ์ผ๋ก ๊ถ์ฅ๋์ง ์์ง๋ง, ์ค๋ ๊ธฐ๋ฅ ์์ด๋ ์ฝํ ์ธ ์ ์ ๊ทผํ ์ ์๋๋ก ํ ์ ์์ต๋๋ค.
@supports์ฟผ๋ฆฌ: ๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ํ๋ ๊ฒฝ์ฐ์๋ง ์คํฌ๋กค ์ค๋ ์คํ์ผ์ ์ ์ฉํ๋ ค๋ฉด CSS@supports๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ง์๋์ง ์๋ ๋ธ๋ผ์ฐ์ ์ ๋ํ ๊ธฐ๋ณธ, ์ค๋ ๋์ง ์์ ๋ ์ด์์์ ์ ์ํ ์ ์์ต๋๋ค.- ์ ์ง์ ํฅ์: ํ์ค ์คํฌ๋กค๋ก ์์ ํ ๊ธฐ๋ฅํ๋๋ก ๋ ์ด์์์ ๋์์ธํ ๋ค์ ์คํฌ๋กค ์ค๋ ์ ํฅ์ ๊ธฐ๋ฅ์ผ๋ก ์ถ๊ฐํฉ๋๋ค. ์ค๋ ์ด ์ ์ฉ๋๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ํต์ฌ ์ฝํ ์ธ ๋ฐ ํ์์ ์๋ํด์ผ ํฉ๋๋ค.
๋ค์ํ ๋ธ๋ผ์ฐ์ ์ ์ฅ์น(์ผ๋ถ ์ง์ญ์์ ํํ ์ฌ์ฉ๋๋ ์ด์ ๋ฒ์ ํฌํจ) ์ ๋ฐ์ ๊ฑธ์น ์ฒ ์ ํ ํ ์คํธ๋ ์ผ๊ด๋๊ณ ํฌ์ฉ์ ์ธ ์ ์ธ๊ณ ๊ฒฝํ์ ๋ณด์ฅํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
4. ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ๋ํ ๋ฐ์ํ ๋์์ธ
์คํฌ๋กค ์ค๋ ์ ๊ตฌํ์ ์ ์ํ์ด์ด์ผ ํฉ๋๋ค. ๋ชจ๋ฐ์ผ ์ฅ์น์์ ํญ๋ชฉ์ ์ค๋ ํ๋ ๊ฐ๋ก ์บ๋ฌ์ ์ ๋ํ ๋ฐ์คํฌํฑ ๋ชจ๋ํฐ์์ ์ด์์ ์ธ ์ํธ ์์ฉ์ด ์๋ ์ ์์ต๋๋ค. ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ฉด ํฌ๊ธฐ ๋๋ ๋ฐฉํฅ์ ๋ฐ๋ผ ์คํฌ๋กค ์ค๋ ์์ฑ์ ์ ์ฉํ๊ฑฐ๋ ์กฐ์ ํ ์ ์์ต๋๋ค.
/* ์์ ํ๋ฉด์ ๋ํ ๊ธฐ๋ณธ๊ฐ: ๊ฐ๋ก ์บ๋ฌ์
*/
.product-gallery {
scroll-snap-type: x mandatory;
}
/* ๋ ํฐ ํ๋ฉด์ ๊ฒฝ์ฐ: ๊ฐ๋ก ์ค๋
์ ๊ฑฐ, ๋ ๋ง์ ํญ๋ชฉ ํ์ */
@media (min-width: 1024px) {
.product-gallery {
scroll-snap-type: none;
display: grid; /* ๋๋ ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ผ๋ก ๋๋๋ฆฌ๊ธฐ */
grid-template-columns: repeat(3, 1fr);
gap: 20px;
overflow-x: unset; /* ๊ฐ๋ก ์คํฌ๋กค ์ ๊ฑฐ */
}
.gallery-item {
width: auto;
margin-right: 0;
scroll-snap-align: none;
}
}
์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉ์ ๊ฒฝํ์ด ์ฅ์น์ ์ปจํ ์คํธ์ ์ต์ ํ๋๋๋ก ํ์ฌ ์ ์ธ๊ณ ์ด๋์๋ ์ค๋งํธํฐ, ํ๋ธ๋ฆฟ ๋๋ ๋ํ ๋ฐ์คํฌํฑ ๋ชจ๋ํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ์์ฐ์ค๋ฝ๊ณ ํจ์จ์ ์ธ ์ํธ ์์ฉ์ ์ ๊ณตํฉ๋๋ค.
5. ์๊ฐ์ ์ ๋ณด๋ฅผ ๋์ด์ ์ ๊ทผ์ฑ ํ ์คํธ
์คํฌ๋กค ์ค๋ ์ ์ข ์ข ์๊ฐ์ ์ ๊ทผ์ฑ์ ํฅ์์ํค์ง๋ง, ๋ค๋ฅธ ํํ์ ์ํธ ์์ฉ์ ๋ฏธ์น๋ ์ํฅ์ ํ ์คํธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ํค๋ณด๋ ํ์: ์ฌ์ฉ์๊ฐ ํ์ดํ ํค, Tab, Shift+Tab, Page Up/Down ๋ฐ Home/End๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ ๋ ์ฝํ ์ธ ๋ฅผ ํ์ํ ์ ์๋์ง ํ์ธํฉ๋๋ค. ์ค๋ ๋ ์ํ๋ ํฌ์ปค์ค ๊ด๋ฆฌ์ ๋ฐ์๋์ด์ผ ํฉ๋๋ค.
- ํ๋ฉด ํ๋ ๊ธฐ ํธํ์ฑ: ํ๋ฉด ํ๋ ๊ธฐ๊ฐ ํ์ฌ ํ์๋๋(์ค๋ ๋) ํญ๋ชฉ์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฐํํ๊ณ ์ฌ์ฉ์๊ฐ ์ฝํ ์ธ ๊ตฌ์กฐ๋ฅผ ์ฝ๊ฒ ์ดํดํ ์ ์๋์ง ํ์ธํฉ๋๋ค.
- ๊ฐ์๋ ๋ชจ์
์ ํธ๋: ๊ฐ์๋ ๋ชจ์
์ ๋ํ ์ฌ์ฉ์ ์ ํธ๋๋ฅผ ์กด์คํฉ๋๋ค(์:
@media (prefers-reduced-motion)์ ํตํด). ์ ๋๋ฉ์ด์ ์ ๋ ์ ํธํ๋ ์ฌ์ฉ์์ ๊ฒฝ์ฐ ์คํฌ๋กค ์ค๋ ์ ๋นํ์ฑํํ๊ฑฐ๋ ๋ ๋๋๋ฌ์ง ๋ชจ๋ฉํ ํจ๊ณผ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์. ์คํฌ๋กค ์ค๋ ์ ๋ชจ๋ฉํ ์ ์ข ์ข ๋ฏธ๋ฌํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋์ง๋ง, ์ด ์ต์ ์ ์ ๊ณตํ๋ฉด ํฌ์ฉ์ฑ์ด ํฅ์๋ฉ๋๋ค.
์ง์ ์ผ๋ก ๊ธ๋ก๋ฒํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฅ๋ ฅ์ด๋ ์ ํธํ๋ ์ํธ ์์ฉ ๋ฐฉ๋ฒ์ ๊ด๊ณ์์ด ๋ชจ๋ ์ฌ๋์ด ์ ๊ทผํ ์ ์๋ ๊ฒ์ ๋๋ค.
์ ์ฌ์ ๊ณผ์ ๋ฐ ์ ๋ต์ ์ ํ
CSS Scroll Snap์ ๊ฐ๋ ฅํ ์ด์ ์๋ ๋ถ๊ตฌํ๊ณ ์ต์ ์ ์๋ฃจ์ ์ด ์๋๊ฑฐ๋ ์ ์คํ ๊ตฌํ์ด ํ์ํ ์ํฉ์ด ์์ต๋๋ค.
1. ๊ณผ๋ํ ์ฌ์ฉ์ ํด๋ก์ธ ์ ์์ต๋๋ค.
๋ชจ๋ ์คํฌ๋กค ๊ฐ๋ฅํ ์์ญ์ด ์ค๋ ์ ์ด์ ์ ์ป๋ ๊ฒ์ ์๋๋๋ค. ๊ธด ๊ธฐ์ฌ, ์ฝ๋ ํธ์ง๊ธฐ ๋๋ ์์ ํ์ ์ฝํ ์ธ ์์ญ์ ์คํฌ๋กค ์ค๋ ์ ์ ์ฉํ๋ฉด ์ ํ์ ์ด๊ณ ์ฑ๊ฐ์๊ฒ ๋๊ปด์ง ์ ์์ต๋๋ค. ์ฌ์ฉ์๋ ๋ฐฉ๋ํ ํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ์คํฌ๋กคํ ๊ฒ์ ๊ธฐ๋ํ๋ฉฐ, ์์์ ์ง์ ์ผ๋ก ๊ฐ์ ์ค๋ ํ๋ ๊ฒ์ ์ฝ๊ธฐ ํ๋ฆ์ ๋ฐฉํดํ๊ณ ์ข์ ๊ฐ์ ์ ๋ฐํ ์ ์์ต๋๋ค. ์คํฌ๋กค ์ค๋ ์ ์ ์คํ๊ฒ ์ฌ์ฉํ๊ณ , ์ ์ด๋ ํ์์ด ๊ฒฝํ์ ํฅ์์ํค๋ ๋ช ํํ๊ฒ ๋ถ๋ฆฌ ๊ฐ๋ฅํ ์ฝํ ์ธ ๋ธ๋ก์๋ง ์ฌ์ฉํ์ญ์์ค.
2. ๋ณต์กํ ๋ ์ด์์์ ์ ๋ฐ๋๊ฐ ํ์ํฉ๋๋ค.
๋งค์ฐ ๋์ ์ด๊ฑฐ๋ ๋น์ ์์ ์ผ๋ก ๋ณต์กํ ๋ ์ด์์์ ์คํฌ๋กค ์ค๋
์ ํตํฉํ๋ ค๋ฉด scroll-padding ๋ฐ scroll-margin ๊ฐ์ ์ธ์ฌํ ์กฐ์ ์ด ํ์ํ ์ ์์ต๋๋ค. ์ฝํ
์ธ ํฌ๊ธฐ๊ฐ ์ฌ์ฉ์ ์ํธ ์์ฉ, ํ๋ฉด ํฌ๊ธฐ ๋ณ๊ฒฝ ๋๋ ๋์ ๋ฐ์ดํฐ๋ก ์ธํด ๋ณ๋๋ ๋ ์ค๋
ํฌ์ธํธ๊ฐ ์ผ๊ด๋๊ฒ ์๋ฒฝํ๊ฒ ์ ๋ ฌ๋๋๋ก ํ๋ ๊ฒ์ด ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๋ค์ํ ์๋๋ฆฌ์ค์ ๋ํ ์๋ํ๋ ํ
์คํธ ๋ฐ ์ฒ ์ ํ ์๋ ๊ฒํ ๊ฐ ํ์์ ์
๋๋ค.
3. ๋ธ๋ผ์ฐ์ ๋ณ ๋ฏธ๋ฌํ ์ฐจ์ด
ํต์ฌ ๊ธฐ๋ฅ์ ํ์คํ๋์ด ์์ง๋ง, ๋ชจ๋ฉํ
๊ณก์ , ์ค๋
์๊ณ๊ฐ(proximity์ ๊ฒฝ์ฐ) ๋๋ ์ค๋
์ ์ ํํ ํ์ด๋ฐ์ ๋ํ ๋ฏธ๋ฌํ ์ฐจ์ด๊ฐ ๋ธ๋ผ์ฐ์ ์์ง ๊ฐ์ ์กด์ฌํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ฐจ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ํ๋ฉฐ ์ผ๋ฐ ์ฌ์ฉ์๋ ๊ฑฐ์ ์์์ฐจ๋ฆฌ์ง ๋ชปํ์ง๋ง, ๋งค์ฐ ์ธ๋ จ๋๊ณ ํฝ์
์๋ฒฝํ ๊ฒฝํ์ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ๊ฐ ํ
์คํธ๋ ํ์์ ์
๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ๋ค์ํ ๋ธ๋ผ์ฐ์ ์ ์ด์ ๋ฒ์ ์ ํตํด ์ฌ์ดํธ์ ์ก์ธ์คํ ์ ์๋ ์ ์ธ๊ณ ๋ฐฐํฌ์ ๊ฒฝ์ฐ ํนํ ๊ทธ๋ ์ต๋๋ค.
4. ๋ค๋ฅธ ์คํฌ๋กค ๋์๊ณผ์ ๊ฐ์ญ
CSS Scroll Snap์ด ์คํฌ๋กค ์ด๋ฒคํธ ๋๋ ํน์ ์คํฌ๋กค ์์น์ ์์กดํ๋ ๋ค๋ฅธ ๋ํํ ์์์ ์ถฉ๋ํ์ง ์๋๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์คํฌ๋กค ์์น์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋๋ ๊ณ ์ ํค๋๊ฐ ์๋ ๊ฒฝ์ฐ ์ค๋ ๋ ์ฝํ ์ธ ์ ์กฐํ๋กญ๊ฒ ์ํธ ์์ฉํ๋๋ก ํ์ญ์์ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ์ฌ์ฉ์ ์ง์ JavaScript ์คํฌ๋กค ์ ๋๋ฉ์ด์ ์ ์คํฌ๋กค ์ค๋ ์ด ๋์ ๋ ๋ ์ฌํ๊ฐํ๊ฑฐ๋ ์กฐ์ ํด์ผ ํ ์ ์์ต๋๋ค.
์คํฌ๋กค ์ค๋ ๋ฐ ์น ์ํธ ์์ฉ์ ๋ฏธ๋ ํ๊ฒฝ
์น ํ์ค์ด ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ CSS Scroll Snap์ ์ฌ์ฉ์๊ฐ ์จ๋ผ์ธ ์ฝํ ์ธ ์ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ํ์ฑํ๋ ๋ฐ ์ ์ ๋ ์ค์ํ ์ญํ ์ ํ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ๋ค์ดํฐ๋ธ ์ฑ๋ฅ, ์ ๊ทผ์ฑ ๋ฐ ์ํํ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ํ ๊ฐ์กฐ๋ ์ต์ ์น ๊ฐ๋ฐ ์์น๊ณผ ์๋ฒฝํ๊ฒ ์ผ์นํฉ๋๋ค.
- ๊ธฐ๋ฅ ํ์ฅ: ๋ชจ๋ฉํ ์์ง ๋งค๊ฐ๋ณ์์ ๋ํ ๋ ์ธ๋ถํ๋ ์ ์ด๋ฅผ ์ ๊ณตํ๋ ์๋ก์ด CSS ์์ฑ์ ๋ณผ ์ ์์ผ๋ฉฐ, ๊ฐ๋ฐ์๋ ์ด์ง ๊ณก์ ๋๋ ๊ฐ์ ์๋๋ฅผ ์ฌ์ฉ์ ์ง์ ํ ์ ์์ต๋๋ค.
- ์๋ก์ด UI ํจํด๊ณผ์ ํตํฉ: ์๋ก์ด UI ํจํด์ด ๋ฑ์ฅํจ์ ๋ฐ๋ผ ๋ถํ ๋๊ณ ์ง๊ด์ ์ธ ํ์์ ๋ง๋๋ ์คํฌ๋กค ์ค๋ ์ ๊ธฐ๋ฅ์ ์ ์ธ๊ณ ๊ฐ๋ฐ์์๊ฒ ๊ธฐ๋ณธ ๋๊ตฌ๊ฐ ๋ ๊ฒ์ ๋๋ค.
- ์ฌ์ฉ์ ๊ธฐ๋์น ์ฆ๊ฐ: ์ฌ์ฉ์๊ฐ ๋ค์ดํฐ๋ธ ์ฑ๊ณผ ํฅ์๋ ์น ๊ฒฝํ ๋ชจ๋์์ ์ ๊ณต๋๋ ์ ์ฐ์ฑ๊ณผ ์์ธก ๊ฐ๋ฅ์ฑ์ ์ต์ํด์ง์ ๋ฐ๋ผ *๋ชจ๋ * ์น ์ฝํ ์ธ ์ ๋ํ ๊ธฐ๋์น๋ ๊ณ์ ๋์์ง ๊ฒ์ ๋๋ค. ์ด ์์ค์ ์ธ๋ จ๋จ์ ์ ๊ณตํ๋ ์น์ฌ์ดํธ๋ ๋๋๋ฌ์ง ๊ฒ์ ๋๋ค.
- CSS Grid ๋ฐ Flexbox์์ ์กฐํ: ๋ฏธ๋์ ๋ฐ์ ์ ์คํฌ๋กค ์ค๋ ๊ณผ CSS Grid ๋ฐ Flexbox์ ๊ฐ์ ๊ฐ๋ ฅํ ๋ ์ด์์ ๋ชจ๋ ๊ฐ์ ํตํฉ์ ๋ณผ ์ ์์ด ์ต์ํ์ ๋ ธ๋ ฅ์ผ๋ก ์ ๊ตํ๊ณ ๋ฐ์์ด ๋น ๋ฅด๋ฉฐ ์์ฐ์ค๋ฝ๊ฒ ํ๋ฅด๋ ๋์์ธ์ ํ์ฑํํ ์ ์์ต๋๋ค.
CSS Scroll Snap์ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ฐ์ ์ด๊ณ ๋ฐ์์ ์ธ ๋๋์ ๊ฐ๋ฐฉํ ์น์ผ๋ก ๊ฐ์ ธ์ค๋ ์ค์ํ ๋จ๊ณ์ ๋๋ค. ๊ฐ๋ฐ์๊ฐ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ผ ๋ฟ๋ง ์๋๋ผ ๊น์ด ์ง๊ด์ ์ด๊ณ ๋ณดํธ์ ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํ ๊ฒฝํ์ ๋ง๋ค ์ ์๋๋ก ํฉ๋๋ค.
๊ฒฐ๋ก : ์ง์ ํ ๊ธ๋ก๋ฒ ์น์ ์ํ ์์ฐ์ค๋ฌ์ด ์คํฌ๋กค ๋ฌผ๋ฆฌํ ์์ฉ
๋ ์์ฐ์ค๋ฝ๊ณ ์ง๊ด์ ์ธ ์น ๊ฒฝํ์ ํฅํ ์ฌ์ ์ ์ง์๋๋ฉฐ, CSS Scroll Snap์ ๋ชจ๋ฉํ ์์ง์ ์ด ๊ฒฝ๋ก์์ ์ค์ํ ์ด์ ํ์ ๋๋ค. ์์ฐ์ค๋ฌ์ด ์คํฌ๋กค ๋ฌผ๋ฆฌํ์ ์์ฉํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ๋จ์ํ ์ฝํ ์ธ ๋ฅผ ์ ๋ ฌํ๋ ๊ฒ์ ๋์ด ์ฌ์ฉ์์ ์ํธ ์์ฉ์ ์ง์ ์ผ๋ก ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋ถ๋๋ฌ์ด ๊ฐ์, ์์ธก ๊ฐ๋ฅํ ์ค๋ , ์ฅ์น ๋ฐ ์ ๋ ฅ ๋ฐฉ๋ฒ ์ ๋ฐ์ ์ผ๊ด๋ ๋์์ ๋ ๊ฐ๋ ฅํ๊ณ ๋งค๋ ฅ์ ์ด๋ฉฐ ์ง์ ์ผ๋ก ์ฌ์ฉ์ ์นํ์ ์ธ ์น์ ๊ธฐ์ฌํฉ๋๋ค.
๋ค์ํ ์ฅ์น, ๋ฅ๋ ฅ ๋ฐ ๋ฌธํ์ ๊ธฐ๋๋ฅผ ๊ฐ์ง ๋ค์ํ ์ฌ์ฉ์๋ก ๊ตฌ์ฑ๋ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์์ฐ์ค๋ฌ์ด ๋ฌผ๋ฆฌํ์ด๋ผ๋ ๋ณดํธ์ ์ธ ์ธ์ด๋ ๋งค์ฐ ์ค์ํฉ๋๋ค. CSS Scroll Snap์ ์ด ํฅ์๋ ๊ฒฝํ์ ์ ๊ณตํ๋ ์ ์ธ์ ์ด๊ณ ์ฑ๋ฅ์ด ์ฐ์ํ๋ฉฐ ์ ๊ทผ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์์ฑ์ ์คํํ๊ณ , ๋ค์ํ ์์ฉ ํ๋ก๊ทธ๋จ์ ํ์ํ๊ณ , ์ด ๊ฐ๋ ฅํ CSS ๊ธฐ๋ฅ์ ๋ค์ ์น ํ๋ก์ ํธ์ ์ฑ ์๊ฐ ์๊ฒ ํตํฉํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค. ๊ทธ๋ ๊ฒ ํจ์ผ๋ก์จ ๋ชจ๋ ๊ณณ์์ ๋ชจ๋ ์ฌ๋์ ์ํ ๋ ์ฆ๊ฒ๊ณ ์ ๊ทผ ๊ฐ๋ฅํ๋ฉฐ ์์ฐ์ค๋ฝ๊ฒ ํ๋ฅด๋ ์น์ ๊ธฐ์ฌํ๊ฒ ๋ ๊ฒ์ ๋๋ค.